#include <bits/stdc++.h>

using namespace std;

template <class T>
struct MyVector : vector<T> {
  MyVector() : vector<T>() { }
  MyVector( int n ) : vector<T>(n) { }
  T &operator [] ( int i )      { return vector<T>::at(i); }
  T operator [] ( int i ) const { return vector<T>::at(i); }
};

/** Если в вашем коде вместо всех int[] и vector<int> использовать MyVector<int>,
    вы увидите все range check error-ы */
MyVector<int> b(10), a;

int main() {
  a.push_back(1);
  a.push_back(2);
  a.push_back(3);
  printf("%d\n", a[0]);
  printf("%d\n", a[1]);
  printf("%d\n", a[2]);
  printf("%d\n", a[3]);
  return 0;
}