微妙にバグってたので修正
int A(unsigned int i)
{
vector<int> v(4);
v[0] = 0;
v[1] = 1;
v[2] = v[3] = 2;
while (v.size() <= i) {
v.insert(v.end(), v[v.back()], v.back() + 1);
}
return v[i];
}