#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);
      }

   }

}
