1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#include <bits/stdc++.h>
using namespace std;
long long int N;
#define stala 67
vector<vector<int>>sh={{25,47,18,27,2,15,37,41,13,20,28,45,32,29,3,36,6,9,23,14,35,12,38,17,1,7,26,16,22,30,4,5,39,24,19,40,21,46,48,43,34,8,42,11,31,33,0,10,44},{37,24,44,4,35,0,1,48,19,21,20,16,36,27,2,26,12,29,18,13,41,23,40,11,5,3,45,47,32,28,8,39,15,7,33,34,10,14,17,31,42,6,9,30,46,22,38,43,25},{46,38,20,36,19,37,12,30,25,5,43,0,3,44,13,17,35,4,32,15,26,21,10,18,34,31,39,48,16,8,9,14,2,27,41,11,28,7,1,42,29,40,45,24,33,47,23,22,6},{28,16,10,31,20,38,44,43,27,40,26,18,46,24,21,47,12,30,29,19,36,11,0,8,9,42,17,5,41,48,23,33,15,37,34,39,35,2,6,4,1,3,22,32,25,45,7,14,13},{26,45,3,42,39,40,11,27,34,15,35,37,17,43,6,21,25,29,31,46,22,7,36,24,28,0,18,8,10,12,47,20,4,38,13,41,32,30,2,9,33,1,16,5,44,19,14,48,23},{24,23,15,0,30,25,19,10,2,37,35,28,6,22,21,42,14,7,31,4,46,29,47,5,27,1,38,17,45,12,34,32,33,9,48,36,16,11,39,44,8,40,41,26,20,13,43,3,18},{6,11,29,21,19,40,15,45,47,13,44,2,22,39,43,16,42,17,0,7,12,10,5,20,38,32,31,1,27,3,23,14,8,48,30,34,33,46,18,26,24,35,28,4,9,37,25,41,36},{46,31,36,5,10,1,23,9,6,32,20,4,27,47,40,48,25,24,14,42,0,26,45,11,7,39,18,34,28,43,38,29,37,13,16,15,22,21,19,8,41,2,30,3,44,17,33,35,12},{8,38,34,29,13,1,22,31,46,3,20,45,37,25,28,16,14,33,26,40,2,44,39,23,42,48,11,27,24,4,32,43,0,36,5,19,21,12,10,9,6,15,7,18,47,35,41,17,30},{11,42,33,20,45,0,5,4,10,15,3,39,27,24,25,36,18,32,29,28,44,22,14,7,19,40,16,8,31,47,21,37,26,6,38,35,48,2,43,17,46,1,30,23,41,12,9,13,34},{18,34,36,19,24,31,47,11,35,0,16,9,6,29,28,15,32,10,45,4,42,39,22,40,14,3,23,38,26,25,7,30,1,2,33,8,27,20,48,37,46,5,13,41,44,17,43,21,12},{17,36,40,43,26,28,1,15,4,34,39,29,13,8,30,45,37,18,44,47,3,22,23,48,33,25,16,19,7,2,46,27,41,9,12,31,32,42,10,20,0,11,21,6,14,35,38,5,24},{2,25,46,30,36,40,33,22,13,0,38,28,9,8,35,45,3,12,37,27,26,19,17,18,44,42,39,32,10,16,15,4,34,47,31,41,23,6,5,1,43,11,20,7,29,24,48,21,14},{44,47,11,17,34,14,2,13,42,21,30,12,43,19,3,23,31,4,24,15,16,33,7,28,37,5,36,32,35,6,20,38,8,39,25,41,10,40,29,9,0,22,27,48,45,1,46,18,26},{11,3,46,48,8,6,5,31,27,7,16,23,10,42,14,0,39,18,45,12,22,21,13,15,36,17,2,9,26,44,47,25,37,19,4,20,40,38,33,1,29,41,35,24,28,43,32,34,30},{9,24,4,11,27,18,29,40,19,39,7,1,35,15,48,21,8,25,10,33,46,23,34,3,14,45,2,42,17,6,26,5,43,16,30,32,31,36,37,0,47,38,13,28,44,22,20,41,12},{8,46,7,29,2,15,40,35,22,38,24,28,39,17,44,42,0,5,19,37,43,18,12,41,1,26,27,45,11,3,16,4,34,30,21,14,32,31,36,10,33,20,13,25,23,47,6,9,48},{17,7,46,42,3,8,13,12,0,16,29,25,26,23,36,19,1,2,9,38,48,30,22,27,37,20,6,14,40,33,10,47,39,44,4,11,28,43,32,41,31,34,21,24,45,5,15,18,35},{16,30,34,3,35,45,20,39,47,38,13,41,10,6,43,0,42,32,14,40,44,28,24,15,46,48,22,4,19,31,8,37,11,27,2,29,26,7,25,9,33,17,23,21,5,12,1,18,36},{13,18,22,29,0,26,27,47,10,9,43,37,20,48,2,31,11,17,1,40,38,32,42,28,5,24,39,3,16,30,6,36,46,4,12,23,8,34,44,7,21,15,45,41,14,25,33,35,19},{0,6,23,47,27,9,13,10,44,33,45,17,35,30,1,48,37,16,31,8,38,41,15,5,43,40,36,34,29,11,3,19,39,28,2,20,4,24,14,42,26,18,46,25,7,12,21,22,32},{8,39,21,1,33,37,26,7,41,43,36,28,4,34,17,19,18,3,14,29,11,24,31,38,35,45,44,25,15,2,20,13,48,0,27,5,10,47,32,16,9,42,30,12,22,40,23,6,46},{12,21,45,9,27,35,13,41,14,37,39,30,7,0,22,46,31,47,20,32,44,16,36,40,33,26,48,18,17,19,43,15,11,29,28,6,8,42,34,38,3,1,10,25,4,5,23,24,2},{16,8,19,22,48,27,32,1,21,10,20,44,37,45,7,30,24,9,31,34,35,12,6,47,36,46,41,2,23,39,43,17,28,5,42,40,29,14,18,11,4,26,15,33,3,0,38,25,13},{37,6,46,34,38,29,0,23,11,20,10,1,41,43,5,39,26,33,4,27,3,15,40,2,36,16,31,24,42,30,13,8,9,47,28,22,12,21,14,35,44,18,32,17,25,45,19,48,7}};
int licz=0;
//vector<int>sh1={5,10,47,8,7,11,16,44,35,19,46,0,30,41,45,1,39,26,4,29,40,25,12,23,21,14,3,43,37,36,13,38,42,24,2,18,22,34,15,20,31,33,28,32,27,9,17,6,48};
void algosia()
{
	long long int n;
	cin>>n;
	n+=stala;
	vector<vector<int>>grid(10,vector<int>(10,0));
	grid[0][0]=1;grid[0][1]=1;grid[0][2]=1;
	grid[1][0]=1;grid[1][1]=1;grid[1][2]=0;
	grid[2][0]=1;grid[2][1]=0;grid[2][2]=0;
	int bit31=n%8;
	n/=8;
	int bit32=n%8;
	n/=8;
	int ss=3;
	for(int i=0; i<8; i++)
	{
		if(i==bit31)
			continue;
		grid[0][ss]=i&1;
		grid[1][ss]=(i>>1)&1;
		grid[2][ss]=(i>>2)&1;
		ss++;
	}
	ss=3;
	for(int i=0; i<8; i++)
	{
		if(i==bit32)
			continue;
		grid[ss][0]=i&1;
		grid[ss][1]=(i>>1)&1;
		grid[ss][2]=(i>>2)&1;
		ss++;
	}
	int bt=0;
	for(int i=3; i<10; i++)
		for(int j=3; j<10; j++)
		{
			grid[i][j]=(n>>sh[licz][bt])&1;
			bt++;
		}
	for(int i=0; i<10; i++)
	{
		for(int j=0; j<10; j++)
			cout<<grid[i][j];
		cout<<"\n";
	}
	cout.flush();
}
void bajtek()
{
	vector<vector<int>>grid(10,vector<int>(10));
	string s;
	long long int n=0;
	for(int i=0; i<10; i++)
	{
		cin>>s;
		for(int j=0; j<10; j++)
			grid[i][j]=s[j]-'0';
	}
	for(int w1=0; w1<10; w1++)
	for(int w2=0; w2<10; w2++){
	if(w1==w2)
		continue;
	for(int w3=0; w3<10; w3++){
	if(w3==w1||w3==w2)
		continue;
	for(int k1=0; k1<10; k1++)
	for(int k2=0; k2<10; k2++){
	if(k1==k2)
		continue;
	for(int k3=0; k3<10; k3++)
	{
		if(k3==k1||k3==k2)
			continue;
		long long int res=0;
		/*vector<int>wr={w1,w2,w3};
		vector<int>kl={k1,k2,k3};
		vector<int>sumw(3,0);
		vector<int>sumk(3,0);
		for(int i=0; i<3; i++)
			for(int j=0; j<3; j++)
				if(grid[wr[i]][kl[j]])
				{
					sumw[i]++;
					sumk[j]++;
				}
		vector<int>ile(4,0);
		for(int i=0; i<3; i++)
			ile[sumw[i]]++;
		if(ile[3]!=1||ile[1]!=1||ile[2]!=1)
			continue;
		ile={0,0,0,0};
		for(int i=0; i<3; i++)
			ile[sumk[i]]++;
		if(ile[3]!=1||ile[1]!=1||ile[2]!=1)
			continue;
		vector<int>ordk(10);
		vector<int>ordw(10);
		for(int i=0; i<3; i++)
			ordw[3-sumw[i]]=wr[i];
		for(int i=0; i<3; i++)
			ordk[3-sumk[i]]=kl[i];
		vector<vector<int>>niezm={{1,1,1},{1,1,0},{1,0,0}};
		bool br=0;
		for(int i=0; i<3; i++)
			for(int j=0; j<3; j++)
				if(niezm[i][j]!=grid[ordw[i]][ordk[j]])
				{
					br=1;
					break;
				}
		if(br)
			continue;
			*/
		if(!(grid[w1][k1]==1&&grid[w1][k2]==1&&grid[w1][k3]==1&&
		     grid[w2][k1]==1&&grid[w2][k2]==1&&grid[w2][k3]==0&&
		     grid[w3][k1]==1&&grid[w3][k2]==0&&grid[w3][k3]==0))
			continue;
		vector<int>ordk(10);
		vector<int>ordw(10);
		ordw[0]=w1,ordw[1]=w2,ordw[2]=w3;
		ordk[0]=k1,ordk[1]=k2,ordk[2]=k3;
		vector<int>rw,rk;
		for(int i=0; i<10; i++)
			if(i!=ordw[0]&&i!=ordw[1]&&i!=ordw[2])
				rw.push_back(i);
		for(int i=0; i<10; i++)
			if(i!=ordk[0]&&i!=ordk[1]&&i!=ordk[2])
				rk.push_back(i);
		vector<bool>lic(8);
		vector<int>rws(8);
		bool br=0;
		for(int i:rw)
		{
			int idx=grid[i][ordk[0]]+2*grid[i][ordk[1]]+4*grid[i][ordk[2]];
			if(lic[idx])
			{
				br=1;
				break;
			}
			lic[idx]=1;
			rws[idx]=i;
		}
		if(br)
			continue;
		long long int resw=0;
		int ss=3;
		for(int i=0; i<8; i++)
		{
			if(!lic[i])
			{
				resw=i;
				continue;
			}
			ordw[ss]=rws[i];
			ss++;
		}
		lic={0,0,0,0,0,0,0,0};
		vector<int>rks(8);
		for(int i:rk)
		{
			int idx=grid[ordw[0]][i]+2*grid[ordw[1]][i]+4*grid[ordw[2]][i];
			if(lic[idx])
			{
				br=1;
				break;
			}
			lic[idx]=1;
			rks[idx]=i;
		}
		if(br)
			continue;
		long long int resk=0;
		ss=3;
		for(int i=0; i<8; i++)
		{
			if(!lic[i])
			{
				resk=i;
				continue;
			}
			ordk[ss]=rks[i];
			ss++;
		}
		/*cout<<"---------------------------------------------------\n";
		for(int i=0; i<10; i++)
		{
			for(int j=0; j<10; j++)
				cout<<grid[ordw[i]][ordk[j]];
			cout<<"\n";
		}
		cout<<"---------------------------------------------------\n";*/
		int bt=0;
		for(int i=3; i<10; i++)
			for(int j=3; j<10; j++)
			{
				if(grid[ordw[i]][ordk[j]])
					res+=(1ll<<sh[licz][bt]);
				bt++;
			}
		res=res*64ll+8ll*resw+resk;
		/*for(int i=9; i>=3; i--)
			for(int j=9; j>=3; j--)
			{
				res*=2;
				res+=grid[ordw[i]][ordk[j]];1000000000000000 1
			}
		res*=8;
		res+=resw;
		res*=8;
		res+=resk;*/
		if(res>N+stala)
			continue;
		cout<<res-stala<<"\n";
		cout.flush();
		return;
	}}}}
}
int main()
{
	string s;
	cin>>s;
	int t;
	cin>>N>>t;
	while(t--)
	{
		if(s=="Bajtek")
			bajtek();
		else
			algosia();
		licz++;
	}
}