#include <cstdio>
#include <iostream>
using namespace std;
void f1(int t){
printf("state 1 [%d]\n",t);
}
void f2(int t){
printf("state 2 [%d]\n",t);
}
void f3(int t){
printf("state 3 [%d]\n",t);
}
void f4(int t){
printf("state 4 [%d]\n",t);
}
int main()
{
printf("vvodi 0/1\n");
using fun=void (*)(int);
// typedef void(*fun)(int); <-- можно это использовать
// А ещё есть тормозной std::function<void(int)>
fun f[4]={&f1,f2,&f3,f4};
int perh[4][2]={{1,0},{2,3},{0,3},{1,0}};
char o;
int mememe=0,u=1;
(*f[mememe])(u);
while (cin>>o){
if (o=='2' or o=='1'){
u++;
mememe=perh[mememe][o-'1'];
f[mememe](u);
}
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnZvaWQgZjEoaW50IHQpewogICBwcmludGYoInN0YXRlIDEgICBbJWRdXG4iLHQpOwp9CnZvaWQgZjIoaW50IHQpewogICBwcmludGYoInN0YXRlIDIgICBbJWRdXG4iLHQpOwp9CnZvaWQgZjMoaW50IHQpewogICBwcmludGYoInN0YXRlIDMgICBbJWRdXG4iLHQpOwp9CnZvaWQgZjQoaW50IHQpewogICBwcmludGYoInN0YXRlIDQgICBbJWRdXG4iLHQpOwp9CgppbnQgbWFpbigpCnsKICAgcHJpbnRmKCJ2dm9kaSAwLzFcbiIpOwoKCiAgIHVzaW5nIGZ1bj12b2lkICgqKShpbnQpOwogIC8vIHR5cGVkZWYgdm9pZCgqZnVuKShpbnQpOyAgPC0tINC80L7QttC90L4g0Y3RgtC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjAogICAvLyDQkCDQtdGJ0ZEg0LXRgdGC0Ywg0YLQvtGA0LzQvtC30L3QvtC5IHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQpPgogICBmdW4gZls0XT17JmYxLGYyLCZmMyxmNH07CiAgIGludCBwZXJoWzRdWzJdPXt7MSwwfSx7MiwzfSx7MCwzfSx7MSwwfX07CgoKICAgY2hhciBvOwogICBpbnQgbWVtZW1lPTAsdT0xOwogICAoKmZbbWVtZW1lXSkodSk7CiAgIHdoaWxlIChjaW4+Pm8pewogICAgICBpZiAobz09JzInIG9yIG89PScxJyl7CiAgICAgICAgIHUrKzsKICAgICAgICAgbWVtZW1lPXBlcmhbbWVtZW1lXVtvLScxJ107CiAgICAgICAgIGZbbWVtZW1lXSh1KTsKICAgICAgfQoKICAgfQoKfQo=