1 #include<bits/stdc++.h>
2 #define re register
3 #define F(A) for(re int (A)=1;(A)<=8;++(A))
4 using namespace std;
5 int n,mi[10],sp[10],sa[10],kn[10],MI,SP,SA,KN;
6 double f[110][10][10][10][10],g[10][20];
7 double ANS,mig[10],spe[10],san[10],kno[10];
8 char s[100],s1[100],s2[100],s3[100],s4[100];
9 double pre[10][20],suf[10][20];
10 void addmi(int id,int val,double p){
11 F(i) F(j) F(k) F(l){
12 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
13 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
14 }
15 }
16 void addsp(int id,int val,double p){
17 F(i) F(j) F(k) F(l){
18 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
19 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
20 }
21 }
22 void addsa(int id,int val,double p){
23 F(i) F(j) F(k) F(l){
24 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
25 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
26 }
27 }
28 void addkn(int id,int val,double p){
29 F(i) F(j) F(k) F(l){
30 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
31 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
32 }
33 }
34 void mimixd(int id,int lim,int val){
35 F(i) F(j) F(k) F(l){
36 re double p=pre[mi[i]][lim];
37 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
38 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
39 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
40 }
41 }
42 void mispxd(int id,int lim,int val){
43 F(i) F(j) F(k) F(l){
44 re double p=pre[mi[i]][lim];
45 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
46 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
47 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
48 }
49 }
50 void misaxd(int id,int lim,int val){
51 F(i) F(j) F(k) F(l){
52 re double p=pre[mi[i]][lim];
53 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
54 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
55 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
56 }
57 }
58 void miknxd(int id,int lim,int val){
59 F(i) F(j) F(k) F(l){
60 re double p=pre[mi[i]][lim];
61 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
62 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
63 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
64 }
65 }
66 void spmixd(int id,int lim,int val){
67 F(i) F(j) F(k) F(l){
68 re double p=pre[sp[j]][lim];
69 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
70 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
71 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
72 }
73 }
74 void spspxd(int id,int lim,int val){
75 F(i) F(j) F(k) F(l){
76 re double p=pre[sp[j]][lim];
77 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
78 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
79 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
80 }
81 }
82 void spsaxd(int id,int lim,int val){
83 F(i) F(j) F(k) F(l){
84 re double p=pre[sp[j]][lim];
85 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
86 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
87 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
88 }
89 }
90 void spknxd(int id,int lim,int val){
91 F(i) F(j) F(k) F(l){
92 re double p=pre[sp[j]][lim];
93 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
94 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
95 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
96 }
97 }
98 void samixd(int id,int lim,int val){
99 F(i) F(j) F(k) F(l){
100 re double p=pre[sa[k]][lim];
101 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
102 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
103 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
104 }
105 }
106 void saspxd(int id,int lim,int val){
107 F(i) F(j) F(k) F(l){
108 re double p=pre[sa[k]][lim];
109 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
110 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
111 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
112 }
113 }
114 void sasaxd(int id,int lim,int val){
115 F(i) F(j) F(k) F(l){
116 re double p=pre[sa[k]][lim];
117 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
118 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
119 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
120 }
121 }
122 void saknxd(int id,int lim,int val){
123 F(i) F(j) F(k) F(l){
124 re double p=pre[sa[k]][lim];
125 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
126 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
127 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
128 }
129 }
130 void knmixd(int id,int lim,int val){
131 F(i) F(j) F(k) F(l){
132 re double p=pre[kn[l]][lim];
133 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
134 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
135 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
136 }
137 }
138 void knspxd(int id,int lim,int val){
139 F(i) F(j) F(k) F(l){
140 re double p=pre[kn[l]][lim];
141 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
142 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
143 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
144 }
145 }
146 void knsaxd(int id,int lim,int val){
147 F(i) F(j) F(k) F(l){
148 re double p=pre[kn[l]][lim];
149 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
150 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
151 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
152 }
153 }
154 void knknxd(int id,int lim,int val){
155 F(i) F(j) F(k) F(l){
156 re double p=pre[kn[l]][lim];
157 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
158 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
159 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
160 }
161 }
162 void mimix(int id,int lim,int val){
163 F(i) F(j) F(k) F(l){
164 re double p=pre[mi[i]][lim-1];
165 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
166 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
167 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
168 }
169 }
170 void mispx(int id,int lim,int val){
171 F(i) F(j) F(k) F(l){
172 re double p=pre[mi[i]][lim-1];
173 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
174 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
175 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
176 }
177 }
178 void misax(int id,int lim,int val){
179 F(i) F(j) F(k) F(l){
180 re double p=pre[mi[i]][lim-1];
181 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
182 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
183 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
184 }
185 }
186 void miknx(int id,int lim,int val){
187 F(i) F(j) F(k) F(l){
188 re double p=pre[mi[i]][lim-1];
189 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
190 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
191 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
192 }
193 }
194 void spmix(int id,int lim,int val){
195 F(i) F(j) F(k) F(l){
196 re double p=pre[sp[j]][lim-1];
197 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
198 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
199 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
200 }
201 }
202 void spspx(int id,int lim,int val){
203 F(i) F(j) F(k) F(l){
204 re double p=pre[sp[j]][lim-1];
205 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
206 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
207 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
208 }
209 }
210 void spsax(int id,int lim,int val){
211 F(i) F(j) F(k) F(l){
212 re double p=pre[sp[j]][lim-1];
213 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
214 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
215 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
216 }
217 }
218 void spknx(int id,int lim,int val){
219 F(i) F(j) F(k) F(l){
220 re double p=pre[sp[j]][lim-1];
221 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
222 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
223 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
224 }
225 }
226 void samix(int id,int lim,int val){
227 F(i) F(j) F(k) F(l){
228 re double p=pre[sa[k]][lim-1];
229 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
230 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
231 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
232 }
233 }
234 void saspx(int id,int lim,int val){
235 F(i) F(j) F(k) F(l){
236 re double p=pre[sa[k]][lim-1];
237 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
238 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
239 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
240 }
241 }
242 void sasax(int id,int lim,int val){
243 F(i) F(j) F(k) F(l){
244 re double p=pre[sa[k]][lim-1];
245 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
246 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
247 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
248 }
249 }
250 void saknx(int id,int lim,int val){
251 F(i) F(j) F(k) F(l){
252 re double p=pre[sa[k]][lim-1];
253 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
254 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
255 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
256 }
257 }
258 void knmix(int id,int lim,int val){
259 F(i) F(j) F(k) F(l){
260 re double p=pre[kn[l]][lim-1];
261 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
262 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
263 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
264 }
265 }
266 void knspx(int id,int lim,int val){
267 F(i) F(j) F(k) F(l){
268 re double p=pre[kn[l]][lim-1];
269 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
270 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
271 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
272 }
273 }
274 void knsax(int id,int lim,int val){
275 F(i) F(j) F(k) F(l){
276 re double p=pre[kn[l]][lim-1];
277 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
278 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
279 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
280 }
281 }
282 void knknx(int id,int lim,int val){
283 F(i) F(j) F(k) F(l){
284 re double p=pre[kn[l]][lim-1];
285 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
286 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
287 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
288 }
289 }
290 void mimidd(int id,int lim,int val){
291 F(i) F(j) F(k) F(l){
292 re double p=suf[mi[i]][lim];
293 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
294 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
295 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
296 }
297 }
298 void mispdd(int id,int lim,int val){
299 F(i) F(j) F(k) F(l){
300 re double p=suf[mi[i]][lim];
301 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
302 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
303 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
304 }
305 }
306 void misadd(int id,int lim,int val){
307 F(i) F(j) F(k) F(l){
308 re double p=suf[mi[i]][lim];
309 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
310 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
311 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
312 }
313 }
314 void mikndd(int id,int lim,int val){
315 F(i) F(j) F(k) F(l){
316 re double p=suf[mi[i]][lim];
317 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
318 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
319 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
320 }
321 }
322 void spmidd(int id,int lim,int val){
323 F(i) F(j) F(k) F(l){
324 re double p=suf[sp[j]][lim];
325 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
326 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
327 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
328 }
329 }
330 void spspdd(int id,int lim,int val){
331 F(i) F(j) F(k) F(l){
332 re double p=suf[sp[j]][lim];
333 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
334 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
335 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
336 }
337 }
338 void spsadd(int id,int lim,int val){
339 F(i) F(j) F(k) F(l){
340 re double p=suf[sp[j]][lim];
341 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
342 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
343 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
344 }
345 }
346 void spkndd(int id,int lim,int val){
347 F(i) F(j) F(k) F(l){
348 re double p=suf[sp[j]][lim];
349 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
350 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
351 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
352 }
353 }
354 void samidd(int id,int lim,int val){
355 F(i) F(j) F(k) F(l){
356 re double p=suf[sa[k]][lim];
357 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
358 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
359 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
360 }
361 }
362 void saspdd(int id,int lim,int val){
363 F(i) F(j) F(k) F(l){
364 re double p=suf[sa[k]][lim];
365 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
366 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
367 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
368 }
369 }
370 void sasadd(int id,int lim,int val){
371 F(i) F(j) F(k) F(l){
372 re double p=suf[sa[k]][lim];
373 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
374 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
375 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
376 }
377 }
378 void sakndd(int id,int lim,int val){
379 F(i) F(j) F(k) F(l){
380 re double p=suf[sa[k]][lim];
381 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
382 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
383 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
384 }
385 }
386 void knmidd(int id,int lim,int val){
387 F(i) F(j) F(k) F(l){
388 re double p=suf[kn[l]][lim];
389 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
390 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
391 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
392 }
393 }
394 void knspdd(int id,int lim,int val){
395 F(i) F(j) F(k) F(l){
396 re double p=suf[kn[l]][lim];
397 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
398 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
399 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
400 }
401 }
402 void knsadd(int id,int lim,int val){
403 F(i) F(j) F(k) F(l){
404 re double p=suf[kn[l]][lim];
405 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
406 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
407 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
408 }
409 }
410 void knkndd(int id,int lim,int val){
411 F(i) F(j) F(k) F(l){
412 re double p=suf[kn[l]][lim];
413 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
414 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
415 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
416 }
417 }
418
419 void mimid(int id,int lim,int val){
420 F(i) F(j) F(k) F(l){
421 re double p=suf[mi[i]][lim+1];
422 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
423 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
424 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
425 }
426 }
427 void mispd(int id,int lim,int val){
428 F(i) F(j) F(k) F(l){
429 re double p=suf[mi[i]][lim+1];
430 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
431 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
432 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
433 }
434 }
435 void misad(int id,int lim,int val){
436 F(i) F(j) F(k) F(l){
437 re double p=suf[mi[i]][lim+1];
438 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
439 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
440 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
441 }
442 }
443 void miknd(int id,int lim,int val){
444 F(i) F(j) F(k) F(l){
445 re double p=suf[mi[i]][lim+1];
446 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
447 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
448 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
449 }
450 }
451 void spmid(int id,int lim,int val){
452 F(i) F(j) F(k) F(l){
453 re double p=suf[sp[j]][lim+1];
454 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
455 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
456 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
457 }
458 }
459 void spspd(int id,int lim,int val){
460 F(i) F(j) F(k) F(l){
461 re double p=suf[sp[j]][lim+1];
462 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
463 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
464 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
465 }
466 }
467 void spsad(int id,int lim,int val){
468 F(i) F(j) F(k) F(l){
469 re double p=suf[sp[j]][lim+1];
470 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
471 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
472 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
473 }
474 }
475 void spknd(int id,int lim,int val){
476 F(i) F(j) F(k) F(l){
477 re double p=suf[sp[j]][lim+1];
478 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
479 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
480 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
481 }
482 }
483 void samid(int id,int lim,int val){
484 F(i) F(j) F(k) F(l){
485 re double p=suf[sa[k]][lim+1];
486 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
487 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
488 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
489 }
490 }
491 void saspd(int id,int lim,int val){
492 F(i) F(j) F(k) F(l){
493 re double p=suf[sa[k]][lim+1];
494 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
495 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
496 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
497 }
498 }
499 void sasad(int id,int lim,int val){
500 F(i) F(j) F(k) F(l){
501 re double p=suf[sa[k]][lim+1];
502 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
503 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
504 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
505 }
506 }
507 void saknd(int id,int lim,int val){
508 F(i) F(j) F(k) F(l){
509 re double p=suf[sa[k]][lim+1];
510 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
511 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
512 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
513 }
514 }
515 void knmid(int id,int lim,int val){
516 F(i) F(j) F(k) F(l){
517 re double p=suf[kn[l]][lim+1];
518 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
519 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
520 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
521 }
522 }
523 void knspd(int id,int lim,int val){
524 F(i) F(j) F(k) F(l){
525 re double p=suf[kn[l]][lim+1];
526 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
527 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
528 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
529 }
530 }
531 void knsad(int id,int lim,int val){
532 F(i) F(j) F(k) F(l){
533 re double p=suf[kn[l]][lim+1];
534 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
535 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
536 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
537 }
538 }
539 void knknd(int id,int lim,int val){
540 F(i) F(j) F(k) F(l){
541 re double p=suf[kn[l]][lim+1];
542 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
543 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
544 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
545 }
546 }
547 void mimixdw(int id,int lim,int val){
548 re int flag=(val<0)?-1:1;
549 F(i) F(j) F(k) F(l){
550 re double p=pre[mi[i]][lim];
551 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
552 for(re int q=0;q<=16;++q){
553 re double gl=g[abs(val)][q];
554 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
555 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
556 }
557 }
558 }
559 void mispxdw(int id,int lim,int val){
560 re int flag=(val<0)?-1:1;
561 F(i) F(j) F(k) F(l){
562 re double p=pre[mi[i]][lim];
563 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
564 for(re int q=0;q<=16;++q){
565 re double gl=g[abs(val)][q];
566 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
567 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
568 }
569 }
570 }
571 void misaxdw(int id,int lim,int val){
572 re int flag=(val<0)?-1:1;
573 F(i) F(j) F(k) F(l){
574 re double p=pre[mi[i]][lim];
575 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
576 for(re int q=0;q<=16;++q){
577 re double gl=g[abs(val)][q];
578 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
579 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
580 }
581 }
582 }
583 void miknxdw(int id,int lim,int val){
584 re int flag=(val<0)?-1:1;
585 F(i) F(j) F(k) F(l){
586 re double p=pre[mi[i]][lim];
587 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
588 for(re int q=0;q<=16;++q){
589 re double gl=g[abs(val)][q];
590 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
591 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
592 }
593 }
594 }
595 void spmixdw(int id,int lim,int val){
596 re int flag=(val<0)?-1:1;
597 F(i) F(j) F(k) F(l){
598 re double p=pre[sp[j]][lim];
599 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
600 for(re int q=0;q<=16;++q){
601 re double gl=g[abs(val)][q];
602 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
603 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
604 }
605 }
606 }
607 void spspxdw(int id,int lim,int val){
608 re int flag=(val<0)?-1:1;
609 F(i) F(j) F(k) F(l){
610 re double p=pre[sp[j]][lim];
611 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
612 for(re int q=0;q<=16;++q){
613 re double gl=g[abs(val)][q];
614 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
615 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
616 }
617 }
618 }
619 void spsaxdw(int id,int lim,int val){
620 re int flag=(val<0)?-1:1;
621 F(i) F(j) F(k) F(l){
622 re double p=pre[sp[j]][lim];
623 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
624 for(re int q=0;q<=16;++q){
625 re double gl=g[abs(val)][q];
626 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
627 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
628 }
629 }
630 }
631 void spknxdw(int id,int lim,int val){
632 re int flag=(val<0)?-1:1;
633 F(i) F(j) F(k) F(l){
634 re double p=pre[sp[j]][lim];
635 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
636 for(re int q=0;q<=16;++q){
637 re double gl=g[abs(val)][q];
638 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
639 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
640 }
641 }
642 }
643 void samixdw(int id,int lim,int val){
644 re int flag=(val<0)?-1:1;
645 F(i) F(j) F(k) F(l){
646 re double p=pre[sa[k]][lim];
647 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
648 for(re int q=0;q<=16;++q){
649 re double gl=g[abs(val)][q];
650 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
651 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
652 }
653 }
654 }
655 void saspxdw(int id,int lim,int val){
656 re int flag=(val<0)?-1:1;
657 F(i) F(j) F(k) F(l){
658 re double p=pre[sa[k]][lim];
659 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
660 for(re int q=0;q<=16;++q){
661 re double gl=g[abs(val)][q];
662 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
663 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
664 }
665 }
666 }
667 void sasaxdw(int id,int lim,int val){
668 re int flag=(val<0)?-1:1;
669 F(i) F(j) F(k) F(l){
670 re double p=pre[sa[k]][lim];
671 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
672 for(re int q=0;q<=16;++q){
673 re double gl=g[abs(val)][q];
674 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
675 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
676 }
677 }
678 }
679 void saknxdw(int id,int lim,int val){
680 re int flag=(val<0)?-1:1;
681 F(i) F(j) F(k) F(l){
682 re double p=pre[sa[k]][lim];
683 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
684 for(re int q=0;q<=16;++q){
685 re double gl=g[abs(val)][q];
686 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
687 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
688 }
689 }
690 }
691 void knmixdw(int id,int lim,int val){
692 re int flag=(val<0)?-1:1;
693 F(i) F(j) F(k) F(l){
694 re double p=pre[kn[l]][lim];
695 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
696 for(re int q=0;q<=16;++q){
697 re double gl=g[abs(val)][q];
698 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
699 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
700 }
701 }
702 }
703 void knspxdw(int id,int lim,int val){
704 re int flag=(val<0)?-1:1;
705 F(i) F(j) F(k) F(l){
706 re double p=pre[kn[l]][lim];
707 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
708 for(re int q=0;q<=16;++q){
709 re double gl=g[abs(val)][q];
710 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
711 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
712 }
713 }
714 }
715 void knsaxdw(int id,int lim,int val){
716 re int flag=(val<0)?-1:1;
717 F(i) F(j) F(k) F(l){
718 re double p=pre[kn[l]][lim];
719 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
720 for(re int q=0;q<=16;++q){
721 re double gl=g[abs(val)][q];
722 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
723 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
724 }
725 }
726 }
727 void knknxdw(int id,int lim,int val){
728 re int flag=(val<0)?-1:1;
729 F(i) F(j) F(k) F(l){
730 re double p=pre[kn[l]][lim];
731 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
732 for(re int q=0;q<=16;++q){
733 re double gl=g[abs(val)][q];
734 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
735 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
736 }
737 }
738 }
739 void mimixw(int id,int lim,int val){
740 re int flag=(val<0)?-1:1;
741 F(i) F(j) F(k) F(l){
742 re double p=pre[mi[i]][lim-1];
743 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
744 for(re int q=0;q<=16;++q){
745 re double gl=g[abs(val)][q];
746 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
747 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
748 }
749 }
750 }
751 void mispxw(int id,int lim,int val){
752 re int flag=(val<0)?-1:1;
753 F(i) F(j) F(k) F(l){
754 re double p=pre[mi[i]][lim-1];
755 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
756 for(re int q=0;q<=16;++q){
757 re double gl=g[abs(val)][q];
758 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
759 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
760 }
761 }
762 }
763 void misaxw(int id,int lim,int val){
764 re int flag=(val<0)?-1:1;
765 F(i) F(j) F(k) F(l){
766 re double p=pre[mi[i]][lim-1];
767 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
768 for(re int q=0;q<=16;++q){
769 re double gl=g[abs(val)][q];
770 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
771 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
772 }
773 }
774 }
775 void miknxw(int id,int lim,int val){
776 re int flag=(val<0)?-1:1;
777 F(i) F(j) F(k) F(l){
778 re double p=pre[mi[i]][lim-1];
779 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
780 for(re int q=0;q<=16;++q){
781 re double gl=g[abs(val)][q];
782 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
783 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
784 }
785 }
786 }
787 void spmixw(int id,int lim,int val){
788 re int flag=(val<0)?-1:1;
789 F(i) F(j) F(k) F(l){
790 re double p=pre[sp[j]][lim-1];
791 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
792 for(re int q=0;q<=16;++q){
793 re double gl=g[abs(val)][q];
794 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
795 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
796 }
797 }
798 }
799 void spspxw(int id,int lim,int val){
800 re int flag=(val<0)?-1:1;
801 F(i) F(j) F(k) F(l){
802 re double p=pre[sp[j]][lim-1];
803 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
804 for(re int q=0;q<=16;++q){
805 re double gl=g[abs(val)][q];
806 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
807 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
808 }
809 }
810 }
811 void spsaxw(int id,int lim,int val){
812 re int flag=(val<0)?-1:1;
813 F(i) F(j) F(k) F(l){
814 re double p=pre[sp[j]][lim-1];
815 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
816 for(re int q=0;q<=16;++q){
817 re double gl=g[abs(val)][q];
818 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
819 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
820 }
821 }
822 }
823 void spknxw(int id,int lim,int val){
824 re int flag=(val<0)?-1:1;
825 F(i) F(j) F(k) F(l){
826 re double p=pre[sp[j]][lim-1];
827 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
828 for(re int q=0;q<=16;++q){
829 re double gl=g[abs(val)][q];
830 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
831 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
832 }
833 }
834 }
835 void samixw(int id,int lim,int val){
836 re int flag=(val<0)?-1:1;
837 F(i) F(j) F(k) F(l){
838 re double p=pre[sa[k]][lim-1];
839 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
840 for(re int q=0;q<=16;++q){
841 re double gl=g[abs(val)][q];
842 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
843 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
844 }
845 }
846 }
847 void saspxw(int id,int lim,int val){
848 re int flag=(val<0)?-1:1;
849 F(i) F(j) F(k) F(l){
850 re double p=pre[sa[k]][lim-1];
851 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
852 for(re int q=0;q<=16;++q){
853 re double gl=g[abs(val)][q];
854 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
855 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
856 }
857 }
858 }
859 void sasaxw(int id,int lim,int val){
860 re int flag=(val<0)?-1:1;
861 F(i) F(j) F(k) F(l){
862 re double p=pre[sa[k]][lim-1];
863 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
864 for(re int q=0;q<=16;++q){
865 re double gl=g[abs(val)][q];
866 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
867 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
868 }
869 }
870 }
871 void saknxw(int id,int lim,int val){
872 re int flag=(val<0)?-1:1;
873 F(i) F(j) F(k) F(l){
874 re double p=pre[sa[k]][lim-1];
875 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
876 for(re int q=0;q<=16;++q){
877 re double gl=g[abs(val)][q];
878 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
879 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
880 }
881 }
882 }
883 void knmixw(int id,int lim,int val){
884 re int flag=(val<0)?-1:1;
885 F(i) F(j) F(k) F(l){
886 re double p=pre[kn[l]][lim-1];
887 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
888 for(re int q=0;q<=16;++q){
889 re double gl=g[abs(val)][q];
890 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
891 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
892 }
893 }
894 }
895 void knspxw(int id,int lim,int val){
896 re int flag=(val<0)?-1:1;
897 F(i) F(j) F(k) F(l){
898 re double p=pre[kn[l]][lim-1];
899 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
900 for(re int q=0;q<=16;++q){
901 re double gl=g[abs(val)][q];
902 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
903 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
904 }
905 }
906 }
907 void knsaxw(int id,int lim,int val){
908 re int flag=(val<0)?-1:1;
909 F(i) F(j) F(k) F(l){
910 re double p=pre[kn[l]][lim-1];
911 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
912 for(re int q=0;q<=16;++q){
913 re double gl=g[abs(val)][q];
914 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
915 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
916 }
917 }
918 }
919 void knknxw(int id,int lim,int val){
920 re int flag=(val<0)?-1:1;
921 F(i) F(j) F(k) F(l){
922 re double p=pre[kn[l]][lim-1];
923 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
924 for(re int q=0;q<=16;++q){
925 re double gl=g[abs(val)][q];
926 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
927 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
928 }
929 }
930 }
931 void mimiddw(int id,int lim,int val){
932 re int flag=(val<0)?-1:1;
933 F(i) F(j) F(k) F(l){
934 re double p=suf[mi[i]][lim];
935 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
936 for(re int q=0;q<=16;++q){
937 re double gl=g[abs(val)][q];
938 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
939 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
940 }
941 }
942 }
943 void mispddw(int id,int lim,int val){
944 re int flag=(val<0)?-1:1;
945 F(i) F(j) F(k) F(l){
946 re double p=suf[mi[i]][lim];
947 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
948 for(re int q=0;q<=16;++q){
949 re double gl=g[abs(val)][q];
950 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
951 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
952 }
953 }
954 }
955 void misaddw(int id,int lim,int val){
956 re int flag=(val<0)?-1:1;
957 F(i) F(j) F(k) F(l){
958 re double p=suf[mi[i]][lim];
959 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
960 for(re int q=0;q<=16;++q){
961 re double gl=g[abs(val)][q];
962 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
963 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
964 }
965 }
966 }
967 void miknddw(int id,int lim,int val){
968 re int flag=(val<0)?-1:1;
969 F(i) F(j) F(k) F(l){
970 re double p=suf[mi[i]][lim];
971 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
972 for(re int q=0;q<=16;++q){
973 re double gl=g[abs(val)][q];
974 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
975 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
976 }
977 }
978 }
979 void spmiddw(int id,int lim,int val){
980 re int flag=(val<0)?-1:1;
981 F(i) F(j) F(k) F(l){
982 re double p=suf[sp[j]][lim];
983 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
984 for(re int q=0;q<=16;++q){
985 re double gl=g[abs(val)][q];
986 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
987 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
988 }
989 }
990 }
991 void spspddw(int id,int lim,int val){
992 re int flag=(val<0)?-1:1;
993 F(i) F(j) F(k) F(l){
994 re double p=suf[sp[j]][lim];
995 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
996 for(re int q=0;q<=16;++q){
997 re double gl=g[abs(val)][q];
998 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
999 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1000 }
1001 }
1002 }
1003 void spsaddw(int id,int lim,int val){
1004 re int flag=(val<0)?-1:1;
1005 F(i) F(j) F(k) F(l){
1006 re double p=suf[sp[j]][lim];
1007 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1008 for(re int q=0;q<=16;++q){
1009 re double gl=g[abs(val)][q];
1010 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1011 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1012 }
1013 }
1014 }
1015 void spknddw(int id,int lim,int val){
1016 re int flag=(val<0)?-1:1;
1017 F(i) F(j) F(k) F(l){
1018 re double p=suf[sp[j]][lim];
1019 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1020 for(re int q=0;q<=16;++q){
1021 re double gl=g[abs(val)][q];
1022 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1023 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1024 }
1025 }
1026 }
1027 void samiddw(int id,int lim,int val){
1028 re int flag=(val<0)?-1:1;
1029 F(i) F(j) F(k) F(l){
1030 re double p=suf[sa[k]][lim];
1031 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1032 for(re int q=0;q<=16;++q){
1033 re double gl=g[abs(val)][q];
1034 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1035 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1036 }
1037 }
1038 }
1039 void saspddw(int id,int lim,int val){
1040 re int flag=(val<0)?-1:1;
1041 F(i) F(j) F(k) F(l){
1042 re double p=suf[sa[k]][lim];
1043 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1044 for(re int q=0;q<=16;++q){
1045 re double gl=g[abs(val)][q];
1046 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1047 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1048 }
1049 }
1050 }
1051 void sasaddw(int id,int lim,int val){
1052 re int flag=(val<0)?-1:1;
1053 F(i) F(j) F(k) F(l){
1054 re double p=suf[sa[k]][lim];
1055 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1056 for(re int q=0;q<=16;++q){
1057 re double gl=g[abs(val)][q];
1058 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1059 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1060 }
1061 }
1062 }
1063 void saknddw(int id,int lim,int val){
1064 re int flag=(val<0)?-1:1;
1065 F(i) F(j) F(k) F(l){
1066 re double p=suf[sa[k]][lim];
1067 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1068 for(re int q=0;q<=16;++q){
1069 re double gl=g[abs(val)][q];
1070 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1071 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1072 }
1073 }
1074 }
1075 void knmiddw(int id,int lim,int val){
1076 re int flag=(val<0)?-1:1;
1077 F(i) F(j) F(k) F(l){
1078 re double p=suf[kn[l]][lim];
1079 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1080 for(re int q=0;q<=16;++q){
1081 re double gl=g[abs(val)][q];
1082 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1083 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1084 }
1085 }
1086 }
1087 void knspddw(int id,int lim,int val){
1088 re int flag=(val<0)?-1:1;
1089 F(i) F(j) F(k) F(l){
1090 re double p=suf[kn[l]][lim];
1091 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1092 for(re int q=0;q<=16;++q){
1093 re double gl=g[abs(val)][q];
1094 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1095 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1096 }
1097 }
1098 }
1099 void knsaddw(int id,int lim,int val){
1100 re int flag=(val<0)?-1:1;
1101 F(i) F(j) F(k) F(l){
1102 re double p=suf[kn[l]][lim];
1103 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1104 for(re int q=0;q<=16;++q){
1105 re double gl=g[abs(val)][q];
1106 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1107 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1108 }
1109 }
1110 }
1111 void knknddw(int id,int lim,int val){
1112 re int flag=(val<0)?-1:1;
1113 F(i) F(j) F(k) F(l){
1114 re double p=suf[kn[l]][lim];
1115 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1116 for(re int q=0;q<=16;++q){
1117 re double gl=g[abs(val)][q];
1118 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1119 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1120 }
1121 }
1122 }
1123 void mimidw(int id,int lim,int val){
1124 re int flag=(val<0)?-1:1;
1125 F(i) F(j) F(k) F(l){
1126 re double p=suf[mi[i]][lim+1];
1127 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1128 for(re int q=0;q<=16;++q){
1129 re double gl=g[abs(val)][q];
1130 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1131 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1132 }
1133 }
1134 }
1135 void mispdw(int id,int lim,int val){
1136 re int flag=(val<0)?-1:1;
1137 F(i) F(j) F(k) F(l){
1138 re double p=suf[mi[i]][lim+1];
1139 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1140 for(re int q=0;q<=16;++q){
1141 re double gl=g[abs(val)][q];
1142 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1143 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1144 }
1145 }
1146 }
1147 void misadw(int id,int lim,int val){
1148 re int flag=(val<0)?-1:1;
1149 F(i) F(j) F(k) F(l){
1150 re double p=suf[mi[i]][lim+1];
1151 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1152 for(re int q=0;q<=16;++q){
1153 re double gl=g[abs(val)][q];
1154 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1155 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1156 }
1157 }
1158 }
1159 void mikndw(int id,int lim,int val){
1160 re int flag=(val<0)?-1:1;
1161 F(i) F(j) F(k) F(l){
1162 re double p=suf[mi[i]][lim+1];
1163 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1164 for(re int q=0;q<=16;++q){
1165 re double gl=g[abs(val)][q];
1166 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1167 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1168 }
1169 }
1170 }
1171 void spmidw(int id,int lim,int val){
1172 re int flag=(val<0)?-1:1;
1173 F(i) F(j) F(k) F(l){
1174 re double p=suf[sp[j]][lim+1];
1175 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1176 for(re int q=0;q<=16;++q){
1177 re double gl=g[abs(val)][q];
1178 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1179 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1180 }
1181 }
1182 }
1183 void spspdw(int id,int lim,int val){
1184 re int flag=(val<0)?-1:1;
1185 F(i) F(j) F(k) F(l){
1186 re double p=suf[sp[j]][lim+1];
1187 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1188 for(re int q=0;q<=16;++q){
1189 re double gl=g[abs(val)][q];
1190 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1191 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1192 }
1193 }
1194 }
1195 void spsadw(int id,int lim,int val){
1196 re int flag=(val<0)?-1:1;
1197 F(i) F(j) F(k) F(l){
1198 re double p=suf[sp[j]][lim+1];
1199 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1200 for(re int q=0;q<=16;++q){
1201 re double gl=g[abs(val)][q];
1202 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1203 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1204 }
1205 }
1206 }
1207 void spkndw(int id,int lim,int val){
1208 re int flag=(val<0)?-1:1;
1209 F(i) F(j) F(k) F(l){
1210 re double p=suf[sp[j]][lim+1];
1211 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1212 for(re int q=0;q<=16;++q){
1213 re double gl=g[abs(val)][q];
1214 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1215 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1216 }
1217 }
1218 }
1219 void samidw(int id,int lim,int val){
1220 re int flag=(val<0)?-1:1;
1221 F(i) F(j) F(k) F(l){
1222 re double p=suf[sa[k]][lim+1];
1223 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1224 for(re int q=0;q<=16;++q){
1225 re double gl=g[abs(val)][q];
1226 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1227 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1228 }
1229 }
1230 }
1231 void saspdw(int id,int lim,int val){
1232 re int flag=(val<0)?-1:1;
1233 F(i) F(j) F(k) F(l){
1234 re double p=suf[sa[k]][lim+1];
1235 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1236 for(re int q=0;q<=16;++q){
1237 re double gl=g[abs(val)][q];
1238 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1239 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1240 }
1241 }
1242 }
1243 void sasadw(int id,int lim,int val){
1244 re int flag=(val<0)?-1:1;
1245 F(i) F(j) F(k) F(l){
1246 re double p=suf[sa[k]][lim+1];
1247 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1248 for(re int q=0;q<=16;++q){
1249 re double gl=g[abs(val)][q];
1250 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1251 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1252 }
1253 }
1254 }
1255 void sakndw(int id,int lim,int val){
1256 re int flag=(val<0)?-1:1;
1257 F(i) F(j) F(k) F(l){
1258 re double p=suf[sa[k]][lim+1];
1259 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1260 for(re int q=0;q<=16;++q){
1261 re double gl=g[abs(val)][q];
1262 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1263 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1264 }
1265 }
1266 }
1267 void knmidw(int id,int lim,int val){
1268 re int flag=(val<0)?-1:1;
1269 F(i) F(j) F(k) F(l){
1270 re double p=suf[kn[l]][lim+1];
1271 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1272 for(re int q=0;q<=16;++q){
1273 re double gl=g[abs(val)][q];
1274 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1275 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1276 }
1277 }
1278 }
1279 void knspdw(int id,int lim,int val){
1280 re int flag=(val<0)?-1:1;
1281 F(i) F(j) F(k) F(l){
1282 re double p=suf[kn[l]][lim+1];
1283 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1284 for(re int q=0;q<=16;++q){
1285 re double gl=g[abs(val)][q];
1286 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1287 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1288 }
1289 }
1290 }
1291 void knsadw(int id,int lim,int val){
1292 re int flag=(val<0)?-1:1;
1293 F(i) F(j) F(k) F(l){
1294 re double p=suf[kn[l]][lim+1];
1295 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1296 for(re int q=0;q<=16;++q){
1297 re double gl=g[abs(val)][q];
1298 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1299 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1300 }
1301 }
1302 }
1303 void knkndw(int id,int lim,int val){
1304 re int flag=(val<0)?-1:1;
1305 F(i) F(j) F(k) F(l){
1306 re double p=suf[kn[l]][lim+1];
1307 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1308 for(re int q=0;q<=16;++q){
1309 re double gl=g[abs(val)][q];
1310 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1311 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1312 }
1313 }
1314 }
1315 signed main(){
1316 scanf("%s%d",s+1,&MI);F(i) mi[i]=s[i]-'0';
1317 scanf("%s%d",s+1,&SP);F(i) sp[i]=s[i]-'0';
1318 scanf("%s%d",s+1,&SA);F(i) sa[i]=s[i]-'0';
1319 scanf("%s%d",s+1,&KN);F(i) kn[i]=s[i]-'0';
1320 f[0][MI][SP][SA][KN]=1.0;
1321 scanf("%d",&n); g[0][0]=1.0;
1322 for(re int i=0;i<8;++i)
1323 for(re int j=0;j<=16;++j){
1324 g[i+1][j+0]+=g[i][j]*1.0/3.0;
1325 g[i+1][j+1]+=g[i][j]*1.0/3.0;
1326 g[i+1][j+2]+=g[i][j]*1.0/3.0;
1327 }
1328 for(re int i=1;i<=8;++i){
1329 pre[i][0]=g[i][0];
1330 for(re int j=1;j<=16;++j)
1331 pre[i][j]=g[i][j]+pre[i][j-1];
1332 }
1333 for(re int i=8;i>=1;--i){
1334 suf[i][17]=g[i][17];
1335 for(re int j=16;j>=0;--j)
1336 suf[i][j]=g[i][j]+suf[i][j+1];
1337 }
1338 for(re int id=1;id<=n;++id){
1339 scanf("%s%s",s1+1,s2+1);
1340 if(s2[1]=='+'||s2[1]=='-'){
1341 re int val=s2[2]-'0';
1342 if(s2[1]=='-') val=-val;
1343 if(s2[3]=='?'){
1344 re int dat=abs(val);
1345 re int flag=(s2[1]=='-')?-1:1;
1346 for(re int i=0;i<=16;++i){
1347 if(s1[2]=='i') addmi(id,i*flag,g[dat][i]);
1348 if(s1[2]=='p') addsp(id,i*flag,g[dat][i]);
1349 if(s1[2]=='a') addsa(id,i*flag,g[dat][i]);
1350 if(s1[2]=='n') addkn(id,i*flag,g[dat][i]);
1351 }
1352 }
1353 else{
1354 if(s1[2]=='i') addmi(id,val,1);
1355 if(s1[2]=='p') addsp(id,val,1);
1356 if(s1[2]=='a') addsa(id,val,1);
1357 if(s1[2]=='n') addkn(id,val,1);
1358 }
1359 continue;
1360 }
1361 else if(s2[1]=='>'||s2[1]=='<'){
1362 re int dat;
1363 scanf("%d%s%s",&dat,s3+1,s4+1);
1364 re int val=s4[2]-'0';
1365 re int flag=(s4[1]=='-')?-1:1;
1366 if(s4[3]=='?'){
1367 if(s2[1]=='>'&&s2[2]=='='){
1368 if(s1[2]=='i'){
1369 if(s3[2]=='i') mimiddw(id,dat,val*flag);
1370 if(s3[2]=='p') mispddw(id,dat,val*flag);
1371 if(s3[2]=='a') misaddw(id,dat,val*flag);
1372 if(s3[2]=='n') miknddw(id,dat,val*flag);
1373 continue;
1374 }
1375 if(s1[2]=='p'){
1376 if(s3[2]=='i') spmiddw(id,dat,val*flag);
1377 if(s3[2]=='p') spspddw(id,dat,val*flag);
1378 if(s3[2]=='a') spsaddw(id,dat,val*flag);
1379 if(s3[2]=='n') spknddw(id,dat,val*flag);
1380 continue;
1381 }
1382 if(s1[2]=='a'){
1383 if(s3[2]=='i') samiddw(id,dat,val*flag);
1384 if(s3[2]=='p') saspddw(id,dat,val*flag);
1385 if(s3[2]=='a') sasaddw(id,dat,val*flag);
1386 if(s3[2]=='n') saknddw(id,dat,val*flag);
1387 continue;
1388 }
1389 if(s1[2]=='n'){
1390 if(s3[2]=='i') knmiddw(id,dat,val*flag);
1391 if(s3[2]=='p') knspddw(id,dat,val*flag);
1392 if(s3[2]=='a') knsaddw(id,dat,val*flag);
1393 if(s3[2]=='n') knknddw(id,dat,val*flag);
1394 continue;
1395 }
1396 }
1397 else if(s2[1]=='<'&&s2[2]=='='){
1398 if(s1[2]=='i'){
1399 if(s3[2]=='i') mimixdw(id,dat,val*flag);
1400 if(s3[2]=='p') mispxdw(id,dat,val*flag);
1401 if(s3[2]=='a') misaxdw(id,dat,val*flag);
1402 if(s3[2]=='n') miknxdw(id,dat,val*flag);
1403 continue;
1404 }
1405 if(s1[2]=='p'){
1406 if(s3[2]=='i') spmixdw(id,dat,val*flag);
1407 if(s3[2]=='p') spspxdw(id,dat,val*flag);
1408 if(s3[2]=='a') spsaxdw(id,dat,val*flag);
1409 if(s3[2]=='n') spknxdw(id,dat,val*flag);
1410 continue;
1411 }
1412 if(s1[2]=='a'){
1413 if(s3[2]=='i') samixdw(id,dat,val*flag);
1414 if(s3[2]=='p') saspxdw(id,dat,val*flag);
1415 if(s3[2]=='a') sasaxdw(id,dat,val*flag);
1416 if(s3[2]=='n') saknxdw(id,dat,val*flag);
1417 continue;
1418 }
1419 if(s1[2]=='n'){
1420 if(s3[2]=='i') knmixdw(id,dat,val*flag);
1421 if(s3[2]=='p') knspxdw(id,dat,val*flag);
1422 if(s3[2]=='a') knsaxdw(id,dat,val*flag);
1423 if(s3[2]=='n') knknxdw(id,dat,val*flag);
1424 continue;
1425 }
1426 }
1427 else if(s2[1]=='>'){
1428 if(s1[2]=='i'){
1429 if(s3[2]=='i') mimidw(id,dat,val*flag);
1430 if(s3[2]=='p') mispdw(id,dat,val*flag);
1431 if(s3[2]=='a') misadw(id,dat,val*flag);
1432 if(s3[2]=='n') mikndw(id,dat,val*flag);
1433 continue;
1434 }
1435 if(s1[2]=='p'){
1436 if(s3[2]=='i') spmidw(id,dat,val*flag);
1437 if(s3[2]=='p') spspdw(id,dat,val*flag);
1438 if(s3[2]=='a') spsadw(id,dat,val*flag);
1439 if(s3[2]=='n') spkndw(id,dat,val*flag);
1440 continue;
1441 }
1442 if(s1[2]=='a'){
1443 if(s3[2]=='i') samidw(id,dat,val*flag);
1444 if(s3[2]=='p') saspdw(id,dat,val*flag);
1445 if(s3[2]=='a') sasadw(id,dat,val*flag);
1446 if(s3[2]=='n') sakndw(id,dat,val*flag);
1447 continue;
1448 }
1449 if(s1[2]=='n'){
1450 if(s3[2]=='i') knmidw(id,dat,val*flag);
1451 if(s3[2]=='p') knspdw(id,dat,val*flag);
1452 if(s3[2]=='a') knsadw(id,dat,val*flag);
1453 if(s3[2]=='n') knkndw(id,dat,val*flag);
1454 continue;
1455 }
1456 }
1457 else if(s2[1]=='<'){
1458 if(s1[2]=='i'){
1459 if(s3[2]=='i') mimixw(id,dat,val*flag);
1460 if(s3[2]=='p') mispxw(id,dat,val*flag);
1461 if(s3[2]=='a') misaxw(id,dat,val*flag);
1462 if(s3[2]=='n') miknxw(id,dat,val*flag);
1463 continue;
1464 }
1465 if(s1[2]=='p'){
1466 if(s3[2]=='i') spmixw(id,dat,val*flag);
1467 if(s3[2]=='p') spspxw(id,dat,val*flag);
1468 if(s3[2]=='a') spsaxw(id,dat,val*flag);
1469 if(s3[2]=='n') spknxw(id,dat,val*flag);
1470 continue;
1471 }
1472 if(s1[2]=='a'){
1473 if(s3[2]=='i') samixw(id,dat,val*flag);
1474 if(s3[2]=='p') saspxw(id,dat,val*flag);
1475 if(s3[2]=='a') sasaxw(id,dat,val*flag);
1476 if(s3[2]=='n') saknxw(id,dat,val*flag);
1477 continue;
1478 }
1479 if(s1[2]=='n'){
1480 if(s3[2]=='i') knmixw(id,dat,val*flag);
1481 if(s3[2]=='p') knspxw(id,dat,val*flag);
1482 if(s3[2]=='a') knsaxw(id,dat,val*flag);
1483 if(s3[2]=='n') knknxw(id,dat,val*flag);
1484 continue;
1485 }
1486 }
1487 }
1488 else{
1489 if(s2[1]=='>'&&s2[2]=='='){
1490 if(s1[2]=='i'){
1491 if(s3[2]=='i') mimidd(id,dat,val*flag);
1492 if(s3[2]=='p') mispdd(id,dat,val*flag);
1493 if(s3[2]=='a') misadd(id,dat,val*flag);
1494 if(s3[2]=='n') mikndd(id,dat,val*flag);
1495 continue;
1496 }
1497 if(s1[2]=='p'){
1498 if(s3[2]=='i') spmidd(id,dat,val*flag);
1499 if(s3[2]=='p') spspdd(id,dat,val*flag);
1500 if(s3[2]=='a') spsadd(id,dat,val*flag);
1501 if(s3[2]=='n') spkndd(id,dat,val*flag);
1502 continue;
1503 }
1504 if(s1[2]=='a'){
1505 if(s3[2]=='i') samidd(id,dat,val*flag);
1506 if(s3[2]=='p') saspdd(id,dat,val*flag);
1507 if(s3[2]=='a') sasadd(id,dat,val*flag);
1508 if(s3[2]=='n') sakndd(id,dat,val*flag);
1509 continue;
1510 }
1511 if(s1[2]=='n'){
1512 if(s3[2]=='i') knmidd(id,dat,val*flag);
1513 if(s3[2]=='p') knspdd(id,dat,val*flag);
1514 if(s3[2]=='a') knsadd(id,dat,val*flag);
1515 if(s3[2]=='n') knkndd(id,dat,val*flag);
1516 continue;
1517 }
1518 }
1519 else if(s2[1]=='<'&&s2[2]=='='){
1520 if(s1[2]=='i'){
1521 if(s3[2]=='i') mimixd(id,dat,val*flag);
1522 if(s3[2]=='p') mispxd(id,dat,val*flag);
1523 if(s3[2]=='a') misaxd(id,dat,val*flag);
1524 if(s3[2]=='n') miknxd(id,dat,val*flag);
1525 continue;
1526 }
1527 if(s1[2]=='p'){
1528 if(s3[2]=='i') spmixd(id,dat,val*flag);
1529 if(s3[2]=='p') spspxd(id,dat,val*flag);
1530 if(s3[2]=='a') spsaxd(id,dat,val*flag);
1531 if(s3[2]=='n') spknxd(id,dat,val*flag);
1532 continue;
1533 }
1534 if(s1[2]=='a'){
1535 if(s3[2]=='i') samixd(id,dat,val*flag);
1536 if(s3[2]=='p') saspxd(id,dat,val*flag);
1537 if(s3[2]=='a') sasaxd(id,dat,val*flag);
1538 if(s3[2]=='n') saknxd(id,dat,val*flag);
1539 continue;
1540 }
1541 if(s1[2]=='n'){
1542 if(s3[2]=='i') knmixd(id,dat,val*flag);
1543 if(s3[2]=='p') knspxd(id,dat,val*flag);
1544 if(s3[2]=='a') knsaxd(id,dat,val*flag);
1545 if(s3[2]=='n') knknxd(id,dat,val*flag);
1546 continue;
1547 }
1548 }
1549 else if(s2[1]=='>'){
1550 if(s1[2]=='i'){
1551 if(s3[2]=='i') mimid(id,dat,val*flag);
1552 if(s3[2]=='p') mispd(id,dat,val*flag);
1553 if(s3[2]=='a') misad(id,dat,val*flag);
1554 if(s3[2]=='n') miknd(id,dat,val*flag);
1555 continue;
1556 }
1557 if(s1[2]=='p'){
1558 if(s3[2]=='i') spmid(id,dat,val*flag);
1559 if(s3[2]=='p') spspd(id,dat,val*flag);
1560 if(s3[2]=='a') spsad(id,dat,val*flag);
1561 if(s3[2]=='n') spknd(id,dat,val*flag);
1562 continue;
1563 }
1564 if(s1[2]=='a'){
1565 if(s3[2]=='i') samid(id,dat,val*flag);
1566 if(s3[2]=='p') saspd(id,dat,val*flag);
1567 if(s3[2]=='a') sasad(id,dat,val*flag);
1568 if(s3[2]=='n') saknd(id,dat,val*flag);
1569 continue;
1570 }
1571 if(s1[2]=='n'){
1572 if(s3[2]=='i') knmid(id,dat,val*flag);
1573 if(s3[2]=='p') knspd(id,dat,val*flag);
1574 if(s3[2]=='a') knsad(id,dat,val*flag);
1575 if(s3[2]=='n') knknd(id,dat,val*flag);
1576 continue;
1577 }
1578 }
1579 else if(s2[1]=='<'){
1580 if(s1[2]=='i'){
1581 if(s3[2]=='i') mimix(id,dat,val*flag);
1582 if(s3[2]=='p') mispx(id,dat,val*flag);
1583 if(s3[2]=='a') misax(id,dat,val*flag);
1584 if(s3[2]=='n') miknx(id,dat,val*flag);
1585 continue;
1586 }
1587 if(s1[2]=='p'){
1588 if(s3[2]=='i') spmix(id,dat,val*flag);
1589 if(s3[2]=='p') spspx(id,dat,val*flag);
1590 if(s3[2]=='a') spsax(id,dat,val*flag);
1591 if(s3[2]=='n') spknx(id,dat,val*flag);
1592 continue;
1593 }
1594 if(s1[2]=='a'){
1595 if(s3[2]=='i') samix(id,dat,val*flag);
1596 if(s3[2]=='p') saspx(id,dat,val*flag);
1597 if(s3[2]=='a') sasax(id,dat,val*flag);
1598 if(s3[2]=='n') saknx(id,dat,val*flag);
1599 continue;
1600 }
1601 if(s1[2]=='n'){
1602 if(s3[2]=='i') knmix(id,dat,val*flag);
1603 if(s3[2]=='p') knspx(id,dat,val*flag);
1604 if(s3[2]=='a') knsax(id,dat,val*flag);
1605 if(s3[2]=='n') knknx(id,dat,val*flag);
1606 continue;
1607 }
1608 }
1609 }
1610 }
1611 }
1612 printf("%.2lf\n",ANS*100.0);
1613 F(i) F(j) F(k) F(l){
1614 mig[mi[i]]+=f[n][i][j][k][l];
1615 spe[sp[j]]+=f[n][i][j][k][l];
1616 san[sa[k]]+=f[n][i][j][k][l];
1617 kno[kn[l]]+=f[n][i][j][k][l];
1618 }
1619 F(i) printf("%.2lf ",mig[i]*100.0);puts("");
1620 F(i) printf("%.2lf ",spe[i]*100.0);puts("");
1621 F(i) printf("%.2lf ",san[i]*100.0);puts("");
1622 F(i) printf("%.2lf ",kno[i]*100.0);puts("");
1623 }
1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,mi[10],sp[10],sa[10],kn[10],MI,SP,SA,KN;
4 double f[110][10][10][10][10],g[10][20];
5 double ANS,mig[10],spe[10],san[10],kno[10];
6 char s[100],s1[100],s2[100],s3[100],s4[100];
7 double pre[10][20],suf[10][20];
8 inline void addmi(register int id,register int val,register double p){
9 for(register int i=1;i<=8;++i)
10 for(register int j=1;j<=8;++j)
11 for(register int k=1;k<=8;++k)
12 for(register int l=1;l<=8;++l){
13 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
14 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
15 }
16 }
17 inline void addsp(register int id,register int val,register double p){
18 for(register int i=1;i<=8;++i)
19 for(register int j=1;j<=8;++j)
20 for(register int k=1;k<=8;++k)
21 for(register int l=1;l<=8;++l){
22 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
23 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
24 }
25 }
26 inline void addsa(register int id,register int val,register double p){
27 for(register int i=1;i<=8;++i)
28 for(register int j=1;j<=8;++j)
29 for(register int k=1;k<=8;++k)
30 for(register int l=1;l<=8;++l){
31 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
32 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
33 }
34 }
35 inline void addkn(register int id,register int val,register double p){
36 for(register int i=1;i<=8;++i)
37 for(register int j=1;j<=8;++j)
38 for(register int k=1;k<=8;++k)
39 for(register int l=1;l<=8;++l){
40 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
41 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
42 }
43 }
44 inline void mimixd(register int id,register int lim,register int val){
45 for(register int i=1;i<=8;++i)
46 for(register int j=1;j<=8;++j)
47 for(register int k=1;k<=8;++k)
48 for(register int l=1;l<=8;++l){
49 register double p=pre[mi[i]][lim];
50 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
51 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
52 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
53 }
54 }
55 inline void mispxd(register int id,register int lim,register int val){
56 for(register int i=1;i<=8;++i)
57 for(register int j=1;j<=8;++j)
58 for(register int k=1;k<=8;++k)
59 for(register int l=1;l<=8;++l){
60 register double p=pre[mi[i]][lim];
61 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
62 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
63 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
64 }
65 }
66 inline void misaxd(register int id,register int lim,register int val){
67 for(register int i=1;i<=8;++i)
68 for(register int j=1;j<=8;++j)
69 for(register int k=1;k<=8;++k)
70 for(register int l=1;l<=8;++l){
71 register double p=pre[mi[i]][lim];
72 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
73 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
74 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
75 }
76 }
77 inline void miknxd(register int id,register int lim,register int val){
78 for(register int i=1;i<=8;++i)
79 for(register int j=1;j<=8;++j)
80 for(register int k=1;k<=8;++k)
81 for(register int l=1;l<=8;++l){
82 register double p=pre[mi[i]][lim];
83 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
84 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
85 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
86 }
87 }
88 inline void spmixd(register int id,register int lim,register int val){
89 for(register int i=1;i<=8;++i)
90 for(register int j=1;j<=8;++j)
91 for(register int k=1;k<=8;++k)
92 for(register int l=1;l<=8;++l){
93 register double p=pre[sp[j]][lim];
94 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
95 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
96 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
97 }
98 }
99 inline void spspxd(register int id,register int lim,register int val){
100 for(register int i=1;i<=8;++i)
101 for(register int j=1;j<=8;++j)
102 for(register int k=1;k<=8;++k)
103 for(register int l=1;l<=8;++l){
104 register double p=pre[sp[j]][lim];
105 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
106 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
107 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
108 }
109 }
110 inline void spsaxd(register int id,register int lim,register int val){
111 for(register int i=1;i<=8;++i)
112 for(register int j=1;j<=8;++j)
113 for(register int k=1;k<=8;++k)
114 for(register int l=1;l<=8;++l){
115 register double p=pre[sp[j]][lim];
116 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
117 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
118 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
119 }
120 }
121 inline void spknxd(register int id,register int lim,register int val){
122 for(register int i=1;i<=8;++i)
123 for(register int j=1;j<=8;++j)
124 for(register int k=1;k<=8;++k)
125 for(register int l=1;l<=8;++l){
126 register double p=pre[sp[j]][lim];
127 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
128 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
129 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
130 }
131 }
132 inline void samixd(register int id,register int lim,register int val){
133 for(register int i=1;i<=8;++i)
134 for(register int j=1;j<=8;++j)
135 for(register int k=1;k<=8;++k)
136 for(register int l=1;l<=8;++l){
137 register double p=pre[sa[k]][lim];
138 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
139 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
140 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
141 }
142 }
143 inline void saspxd(register int id,register int lim,register int val){
144 for(register int i=1;i<=8;++i)
145 for(register int j=1;j<=8;++j)
146 for(register int k=1;k<=8;++k)
147 for(register int l=1;l<=8;++l){
148 register double p=pre[sa[k]][lim];
149 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
150 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
151 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
152 }
153 }
154 inline void sasaxd(register int id,register int lim,register int val){
155 for(register int i=1;i<=8;++i)
156 for(register int j=1;j<=8;++j)
157 for(register int k=1;k<=8;++k)
158 for(register int l=1;l<=8;++l){
159 register double p=pre[sa[k]][lim];
160 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
161 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
162 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
163 }
164 }
165 inline void saknxd(register int id,register int lim,register int val){
166 for(register int i=1;i<=8;++i)
167 for(register int j=1;j<=8;++j)
168 for(register int k=1;k<=8;++k)
169 for(register int l=1;l<=8;++l){
170 register double p=pre[sa[k]][lim];
171 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
172 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
173 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
174 }
175 }
176 inline void knmixd(register int id,register int lim,register int val){
177 for(register int i=1;i<=8;++i)
178 for(register int j=1;j<=8;++j)
179 for(register int k=1;k<=8;++k)
180 for(register int l=1;l<=8;++l){
181 register double p=pre[kn[l]][lim];
182 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
183 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
184 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
185 }
186 }
187 inline void knspxd(register int id,register int lim,register int val){
188 for(register int i=1;i<=8;++i)
189 for(register int j=1;j<=8;++j)
190 for(register int k=1;k<=8;++k)
191 for(register int l=1;l<=8;++l){
192 register double p=pre[kn[l]][lim];
193 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
194 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
195 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
196 }
197 }
198 inline void knsaxd(register int id,register int lim,register int val){
199 for(register int i=1;i<=8;++i)
200 for(register int j=1;j<=8;++j)
201 for(register int k=1;k<=8;++k)
202 for(register int l=1;l<=8;++l){
203 register double p=pre[kn[l]][lim];
204 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
205 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
206 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
207 }
208 }
209 inline void knknxd(register int id,register int lim,register int val){
210 for(register int i=1;i<=8;++i)
211 for(register int j=1;j<=8;++j)
212 for(register int k=1;k<=8;++k)
213 for(register int l=1;l<=8;++l){
214 register double p=pre[kn[l]][lim];
215 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
216 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
217 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
218 }
219 }
220 inline void mimix(register int id,register int lim,register int val){
221 for(register int i=1;i<=8;++i)
222 for(register int j=1;j<=8;++j)
223 for(register int k=1;k<=8;++k)
224 for(register int l=1;l<=8;++l){
225 register double p=pre[mi[i]][lim-1];
226 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
227 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
228 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
229 }
230 }
231 inline void mispx(register int id,register int lim,register int val){
232 for(register int i=1;i<=8;++i)
233 for(register int j=1;j<=8;++j)
234 for(register int k=1;k<=8;++k)
235 for(register int l=1;l<=8;++l){
236 register double p=pre[mi[i]][lim-1];
237 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
238 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
239 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
240 }
241 }
242 inline void misax(register int id,register int lim,register int val){
243 for(register int i=1;i<=8;++i)
244 for(register int j=1;j<=8;++j)
245 for(register int k=1;k<=8;++k)
246 for(register int l=1;l<=8;++l){
247 register double p=pre[mi[i]][lim-1];
248 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
249 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
250 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
251 }
252 }
253 inline void miknx(register int id,register int lim,register int val){
254 for(register int i=1;i<=8;++i)
255 for(register int j=1;j<=8;++j)
256 for(register int k=1;k<=8;++k)
257 for(register int l=1;l<=8;++l){
258 register double p=pre[mi[i]][lim-1];
259 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
260 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
261 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
262 }
263 }
264 inline void spmix(register int id,register int lim,register int val){
265 for(register int i=1;i<=8;++i)
266 for(register int j=1;j<=8;++j)
267 for(register int k=1;k<=8;++k)
268 for(register int l=1;l<=8;++l){
269 register double p=pre[sp[j]][lim-1];
270 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
271 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
272 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
273 }
274 }
275 inline void spspx(register int id,register int lim,register int val){
276 for(register int i=1;i<=8;++i)
277 for(register int j=1;j<=8;++j)
278 for(register int k=1;k<=8;++k)
279 for(register int l=1;l<=8;++l){
280 register double p=pre[sp[j]][lim-1];
281 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
282 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
283 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
284 }
285 }
286 inline void spsax(register int id,register int lim,register int val){
287 for(register int i=1;i<=8;++i)
288 for(register int j=1;j<=8;++j)
289 for(register int k=1;k<=8;++k)
290 for(register int l=1;l<=8;++l){
291 register double p=pre[sp[j]][lim-1];
292 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
293 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
294 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
295 }
296 }
297 inline void spknx(register int id,register int lim,register int val){
298 for(register int i=1;i<=8;++i)
299 for(register int j=1;j<=8;++j)
300 for(register int k=1;k<=8;++k)
301 for(register int l=1;l<=8;++l){
302 register double p=pre[sp[j]][lim-1];
303 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
304 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
305 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
306 }
307 }
308 inline void samix(register int id,register int lim,register int val){
309 for(register int i=1;i<=8;++i)
310 for(register int j=1;j<=8;++j)
311 for(register int k=1;k<=8;++k)
312 for(register int l=1;l<=8;++l){
313 register double p=pre[sa[k]][lim-1];
314 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
315 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
316 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
317 }
318 }
319 inline void saspx(register int id,register int lim,register int val){
320 for(register int i=1;i<=8;++i)
321 for(register int j=1;j<=8;++j)
322 for(register int k=1;k<=8;++k)
323 for(register int l=1;l<=8;++l){
324 register double p=pre[sa[k]][lim-1];
325 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
326 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
327 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
328 }
329 }
330 inline void sasax(register int id,register int lim,register int val){
331 for(register int i=1;i<=8;++i)
332 for(register int j=1;j<=8;++j)
333 for(register int k=1;k<=8;++k)
334 for(register int l=1;l<=8;++l){
335 register double p=pre[sa[k]][lim-1];
336 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
337 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
338 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
339 }
340 }
341 inline void saknx(register int id,register int lim,register int val){
342 for(register int i=1;i<=8;++i)
343 for(register int j=1;j<=8;++j)
344 for(register int k=1;k<=8;++k)
345 for(register int l=1;l<=8;++l){
346 register double p=pre[sa[k]][lim-1];
347 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
348 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
349 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
350 }
351 }
352 inline void knmix(register int id,register int lim,register int val){
353 for(register int i=1;i<=8;++i)
354 for(register int j=1;j<=8;++j)
355 for(register int k=1;k<=8;++k)
356 for(register int l=1;l<=8;++l){
357 register double p=pre[kn[l]][lim-1];
358 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
359 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
360 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
361 }
362 }
363 inline void knspx(register int id,register int lim,register int val){
364 for(register int i=1;i<=8;++i)
365 for(register int j=1;j<=8;++j)
366 for(register int k=1;k<=8;++k)
367 for(register int l=1;l<=8;++l){
368 register double p=pre[kn[l]][lim-1];
369 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
370 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
371 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
372 }
373 }
374 inline void knsax(register int id,register int lim,register int val){
375 for(register int i=1;i<=8;++i)
376 for(register int j=1;j<=8;++j)
377 for(register int k=1;k<=8;++k)
378 for(register int l=1;l<=8;++l){
379 register double p=pre[kn[l]][lim-1];
380 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
381 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
382 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
383 }
384 }
385 inline void knknx(register int id,register int lim,register int val){
386 for(register int i=1;i<=8;++i)
387 for(register int j=1;j<=8;++j)
388 for(register int k=1;k<=8;++k)
389 for(register int l=1;l<=8;++l){
390 register double p=pre[kn[l]][lim-1];
391 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
392 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
393 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
394 }
395 }
396 inline void mimidd(register int id,register int lim,register int val){
397 for(register int i=1;i<=8;++i)
398 for(register int j=1;j<=8;++j)
399 for(register int k=1;k<=8;++k)
400 for(register int l=1;l<=8;++l){
401 register double p=suf[mi[i]][lim];
402 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
403 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
404 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
405 }
406 }
407 inline void mispdd(register int id,register int lim,register int val){
408 for(register int i=1;i<=8;++i)
409 for(register int j=1;j<=8;++j)
410 for(register int k=1;k<=8;++k)
411 for(register int l=1;l<=8;++l){
412 register double p=suf[mi[i]][lim];
413 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
414 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
415 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
416 }
417 }
418 inline void misadd(register int id,register int lim,register int val){
419 for(register int i=1;i<=8;++i)
420 for(register int j=1;j<=8;++j)
421 for(register int k=1;k<=8;++k)
422 for(register int l=1;l<=8;++l){
423 register double p=suf[mi[i]][lim];
424 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
425 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
426 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
427 }
428 }
429 inline void mikndd(register int id,register int lim,register int val){
430 for(register int i=1;i<=8;++i)
431 for(register int j=1;j<=8;++j)
432 for(register int k=1;k<=8;++k)
433 for(register int l=1;l<=8;++l){
434 register double p=suf[mi[i]][lim];
435 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
436 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
437 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
438 }
439 }
440 inline void spmidd(register int id,register int lim,register int val){
441 for(register int i=1;i<=8;++i)
442 for(register int j=1;j<=8;++j)
443 for(register int k=1;k<=8;++k)
444 for(register int l=1;l<=8;++l){
445 register double p=suf[sp[j]][lim];
446 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
447 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
448 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
449 }
450 }
451 inline void spspdd(register int id,register int lim,register int val){
452 for(register int i=1;i<=8;++i)
453 for(register int j=1;j<=8;++j)
454 for(register int k=1;k<=8;++k)
455 for(register int l=1;l<=8;++l){
456 register double p=suf[sp[j]][lim];
457 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
458 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
459 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
460 }
461 }
462 inline void spsadd(register int id,register int lim,register int val){
463 for(register int i=1;i<=8;++i)
464 for(register int j=1;j<=8;++j)
465 for(register int k=1;k<=8;++k)
466 for(register int l=1;l<=8;++l){
467 register double p=suf[sp[j]][lim];
468 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
469 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
470 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
471 }
472 }
473 inline void spkndd(register int id,register int lim,register int val){
474 for(register int i=1;i<=8;++i)
475 for(register int j=1;j<=8;++j)
476 for(register int k=1;k<=8;++k)
477 for(register int l=1;l<=8;++l){
478 register double p=suf[sp[j]][lim];
479 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
480 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
481 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
482 }
483 }
484 inline void samidd(register int id,register int lim,register int val){
485 for(register int i=1;i<=8;++i)
486 for(register int j=1;j<=8;++j)
487 for(register int k=1;k<=8;++k)
488 for(register int l=1;l<=8;++l){
489 register double p=suf[sa[k]][lim];
490 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
491 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
492 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
493 }
494 }
495 inline void saspdd(register int id,register int lim,register int val){
496 for(register int i=1;i<=8;++i)
497 for(register int j=1;j<=8;++j)
498 for(register int k=1;k<=8;++k)
499 for(register int l=1;l<=8;++l){
500 register double p=suf[sa[k]][lim];
501 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
502 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
503 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
504 }
505 }
506 inline void sasadd(register int id,register int lim,register int val){
507 for(register int i=1;i<=8;++i)
508 for(register int j=1;j<=8;++j)
509 for(register int k=1;k<=8;++k)
510 for(register int l=1;l<=8;++l){
511 register double p=suf[sa[k]][lim];
512 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
513 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
514 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
515 }
516 }
517 inline void sakndd(register int id,register int lim,register int val){
518 for(register int i=1;i<=8;++i)
519 for(register int j=1;j<=8;++j)
520 for(register int k=1;k<=8;++k)
521 for(register int l=1;l<=8;++l){
522 register double p=suf[sa[k]][lim];
523 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
524 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
525 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
526 }
527 }
528 inline void knmidd(register int id,register int lim,register int val){
529 for(register int i=1;i<=8;++i)
530 for(register int j=1;j<=8;++j)
531 for(register int k=1;k<=8;++k)
532 for(register int l=1;l<=8;++l){
533 register double p=suf[kn[l]][lim];
534 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
535 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
536 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
537 }
538 }
539 inline void knspdd(register int id,register int lim,register int val){
540 for(register int i=1;i<=8;++i)
541 for(register int j=1;j<=8;++j)
542 for(register int k=1;k<=8;++k)
543 for(register int l=1;l<=8;++l){
544 register double p=suf[kn[l]][lim];
545 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
546 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
547 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
548 }
549 }
550 inline void knsadd(register int id,register int lim,register int val){
551 for(register int i=1;i<=8;++i)
552 for(register int j=1;j<=8;++j)
553 for(register int k=1;k<=8;++k)
554 for(register int l=1;l<=8;++l){
555 register double p=suf[kn[l]][lim];
556 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
557 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
558 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
559 }
560 }
561 inline void knkndd(register int id,register int lim,register int val){
562 for(register int i=1;i<=8;++i)
563 for(register int j=1;j<=8;++j)
564 for(register int k=1;k<=8;++k)
565 for(register int l=1;l<=8;++l){
566 register double p=suf[kn[l]][lim];
567 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
568 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
569 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
570 }
571 }
572 inline void mimid(register int id,register int lim,register int val){
573 for(register int i=1;i<=8;++i)
574 for(register int j=1;j<=8;++j)
575 for(register int k=1;k<=8;++k)
576 for(register int l=1;l<=8;++l){
577 register double p=suf[mi[i]][lim+1];
578 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
579 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
580 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
581 }
582 }
583 inline void mispd(register int id,register int lim,register int val){
584 for(register int i=1;i<=8;++i)
585 for(register int j=1;j<=8;++j)
586 for(register int k=1;k<=8;++k)
587 for(register int l=1;l<=8;++l){
588 register double p=suf[mi[i]][lim+1];
589 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
590 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
591 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
592 }
593 }
594 inline void misad(register int id,register int lim,register int val){
595 for(register int i=1;i<=8;++i)
596 for(register int j=1;j<=8;++j)
597 for(register int k=1;k<=8;++k)
598 for(register int l=1;l<=8;++l){
599 register double p=suf[mi[i]][lim+1];
600 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
601 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
602 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
603 }
604 }
605 inline void miknd(register int id,register int lim,register int val){
606 for(register int i=1;i<=8;++i)
607 for(register int j=1;j<=8;++j)
608 for(register int k=1;k<=8;++k)
609 for(register int l=1;l<=8;++l){
610 register double p=suf[mi[i]][lim+1];
611 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
612 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
613 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
614 }
615 }
616 inline void spmid(register int id,register int lim,register int val){
617 for(register int i=1;i<=8;++i)
618 for(register int j=1;j<=8;++j)
619 for(register int k=1;k<=8;++k)
620 for(register int l=1;l<=8;++l){
621 register double p=suf[sp[j]][lim+1];
622 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
623 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
624 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
625 }
626 }
627 inline void spspd(register int id,register int lim,register int val){
628 for(register int i=1;i<=8;++i)
629 for(register int j=1;j<=8;++j)
630 for(register int k=1;k<=8;++k)
631 for(register int l=1;l<=8;++l){
632 register double p=suf[sp[j]][lim+1];
633 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
634 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
635 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
636 }
637 }
638 inline void spsad(register int id,register int lim,register int val){
639 for(register int i=1;i<=8;++i)
640 for(register int j=1;j<=8;++j)
641 for(register int k=1;k<=8;++k)
642 for(register int l=1;l<=8;++l){
643 register double p=suf[sp[j]][lim+1];
644 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
645 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
646 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
647 }
648 }
649 inline void spknd(register int id,register int lim,register int val){
650 for(register int i=1;i<=8;++i)
651 for(register int j=1;j<=8;++j)
652 for(register int k=1;k<=8;++k)
653 for(register int l=1;l<=8;++l){
654 register double p=suf[sp[j]][lim+1];
655 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
656 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
657 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
658 }
659 }
660 inline void samid(register int id,register int lim,register int val){
661 for(register int i=1;i<=8;++i)
662 for(register int j=1;j<=8;++j)
663 for(register int k=1;k<=8;++k)
664 for(register int l=1;l<=8;++l){
665 register double p=suf[sa[k]][lim+1];
666 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
667 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
668 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
669 }
670 }
671 inline void saspd(register int id,register int lim,register int val){
672 for(register int i=1;i<=8;++i)
673 for(register int j=1;j<=8;++j)
674 for(register int k=1;k<=8;++k)
675 for(register int l=1;l<=8;++l){
676 register double p=suf[sa[k]][lim+1];
677 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
678 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
679 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
680 }
681 }
682 inline void sasad(register int id,register int lim,register int val){
683 for(register int i=1;i<=8;++i)
684 for(register int j=1;j<=8;++j)
685 for(register int k=1;k<=8;++k)
686 for(register int l=1;l<=8;++l){
687 register double p=suf[sa[k]][lim+1];
688 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
689 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
690 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
691 }
692 }
693 inline void saknd(register int id,register int lim,register int val){
694 for(register int i=1;i<=8;++i)
695 for(register int j=1;j<=8;++j)
696 for(register int k=1;k<=8;++k)
697 for(register int l=1;l<=8;++l){
698 register double p=suf[sa[k]][lim+1];
699 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
700 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
701 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
702 }
703 }
704 inline void knmid(register int id,register int lim,register int val){
705 for(register int i=1;i<=8;++i)
706 for(register int j=1;j<=8;++j)
707 for(register int k=1;k<=8;++k)
708 for(register int l=1;l<=8;++l){
709 register double p=suf[kn[l]][lim+1];
710 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
711 if(i+val<=0) ANS+=f[id-1][i][j][k][l]*p;
712 else f[id][min(8,i+val)][j][k][l]+=f[id-1][i][j][k][l]*p;
713 }
714 }
715 inline void knspd(register int id,register int lim,register int val){
716 for(register int i=1;i<=8;++i)
717 for(register int j=1;j<=8;++j)
718 for(register int k=1;k<=8;++k)
719 for(register int l=1;l<=8;++l){
720 register double p=suf[kn[l]][lim+1];
721 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
722 if(j+val<=0) ANS+=f[id-1][i][j][k][l]*p;
723 else f[id][i][min(8,j+val)][k][l]+=f[id-1][i][j][k][l]*p;
724 }
725 }
726 inline void knsad(register int id,register int lim,register int val){
727 for(register int i=1;i<=8;++i)
728 for(register int j=1;j<=8;++j)
729 for(register int k=1;k<=8;++k)
730 for(register int l=1;l<=8;++l){
731 register double p=suf[kn[l]][lim+1];
732 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
733 if(k+val<=0) ANS+=f[id-1][i][j][k][l]*p;
734 else f[id][i][j][min(8,k+val)][l]+=f[id-1][i][j][k][l]*p;
735 }
736 }
737 inline void knknd(register int id,register int lim,register int val){
738 for(register int i=1;i<=8;++i)
739 for(register int j=1;j<=8;++j)
740 for(register int k=1;k<=8;++k)
741 for(register int l=1;l<=8;++l){
742 register double p=suf[kn[l]][lim+1];
743 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
744 if(l+val<=0) ANS+=f[id-1][i][j][k][l]*p;
745 else f[id][i][j][k][min(8,l+val)]+=f[id-1][i][j][k][l]*p;
746 }
747 }
748 inline void mimixdw(register int id,register int lim,register int val){
749 register int flag=(val<0)?-1:1;
750 for(register int i=1;i<=8;++i)
751 for(register int j=1;j<=8;++j)
752 for(register int k=1;k<=8;++k)
753 for(register int l=1;l<=8;++l){
754 register double p=pre[mi[i]][lim];
755 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
756 for(register int q=0;q<=16;++q){
757 register double gl=g[abs(val)][q];
758 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
759 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
760 }
761 }
762 }
763 inline void mispxdw(register int id,register int lim,register int val){
764 register int flag=(val<0)?-1:1;
765 for(register int i=1;i<=8;++i)
766 for(register int j=1;j<=8;++j)
767 for(register int k=1;k<=8;++k)
768 for(register int l=1;l<=8;++l){
769 register double p=pre[mi[i]][lim];
770 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
771 for(register int q=0;q<=16;++q){
772 register double gl=g[abs(val)][q];
773 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
774 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
775 }
776 }
777 }
778 inline void misaxdw(register int id,register int lim,register int val){
779 register int flag=(val<0)?-1:1;
780 for(register int i=1;i<=8;++i)
781 for(register int j=1;j<=8;++j)
782 for(register int k=1;k<=8;++k)
783 for(register int l=1;l<=8;++l){
784 register double p=pre[mi[i]][lim];
785 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
786 for(register int q=0;q<=16;++q){
787 register double gl=g[abs(val)][q];
788 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
789 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
790 }
791 }
792 }
793 inline void miknxdw(register int id,register int lim,register int val){
794 register int flag=(val<0)?-1:1;
795 for(register int i=1;i<=8;++i)
796 for(register int j=1;j<=8;++j)
797 for(register int k=1;k<=8;++k)
798 for(register int l=1;l<=8;++l){
799 register double p=pre[mi[i]][lim];
800 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
801 for(register int q=0;q<=16;++q){
802 register double gl=g[abs(val)][q];
803 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
804 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
805 }
806 }
807 }
808 inline void spmixdw(register int id,register int lim,register int val){
809 register int flag=(val<0)?-1:1;
810 for(register int i=1;i<=8;++i)
811 for(register int j=1;j<=8;++j)
812 for(register int k=1;k<=8;++k)
813 for(register int l=1;l<=8;++l){
814 register double p=pre[sp[j]][lim];
815 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
816 for(register int q=0;q<=16;++q){
817 register double gl=g[abs(val)][q];
818 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
819 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
820 }
821 }
822 }
823 inline void spspxdw(register int id,register int lim,register int val){
824 register int flag=(val<0)?-1:1;
825 for(register int i=1;i<=8;++i)
826 for(register int j=1;j<=8;++j)
827 for(register int k=1;k<=8;++k)
828 for(register int l=1;l<=8;++l){
829 register double p=pre[sp[j]][lim];
830 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
831 for(register int q=0;q<=16;++q){
832 register double gl=g[abs(val)][q];
833 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
834 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
835 }
836 }
837 }
838 inline void spsaxdw(register int id,register int lim,register int val){
839 register int flag=(val<0)?-1:1;
840 for(register int i=1;i<=8;++i)
841 for(register int j=1;j<=8;++j)
842 for(register int k=1;k<=8;++k)
843 for(register int l=1;l<=8;++l){
844 register double p=pre[sp[j]][lim];
845 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
846 for(register int q=0;q<=16;++q){
847 register double gl=g[abs(val)][q];
848 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
849 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
850 }
851 }
852 }
853 inline void spknxdw(register int id,register int lim,register int val){
854 register int flag=(val<0)?-1:1;
855 for(register int i=1;i<=8;++i)
856 for(register int j=1;j<=8;++j)
857 for(register int k=1;k<=8;++k)
858 for(register int l=1;l<=8;++l){
859 register double p=pre[sp[j]][lim];
860 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
861 for(register int q=0;q<=16;++q){
862 register double gl=g[abs(val)][q];
863 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
864 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
865 }
866 }
867 }
868 inline void samixdw(register int id,register int lim,register int val){
869 register int flag=(val<0)?-1:1;
870 for(register int i=1;i<=8;++i)
871 for(register int j=1;j<=8;++j)
872 for(register int k=1;k<=8;++k)
873 for(register int l=1;l<=8;++l){
874 register double p=pre[sa[k]][lim];
875 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
876 for(register int q=0;q<=16;++q){
877 register double gl=g[abs(val)][q];
878 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
879 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
880 }
881 }
882 }
883 inline void saspxdw(register int id,register int lim,register int val){
884 register int flag=(val<0)?-1:1;
885 for(register int i=1;i<=8;++i)
886 for(register int j=1;j<=8;++j)
887 for(register int k=1;k<=8;++k)
888 for(register int l=1;l<=8;++l){
889 register double p=pre[sa[k]][lim];
890 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
891 for(register int q=0;q<=16;++q){
892 register double gl=g[abs(val)][q];
893 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
894 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
895 }
896 }
897 }
898 inline void sasaxdw(register int id,register int lim,register int val){
899 register int flag=(val<0)?-1:1;
900 for(register int i=1;i<=8;++i)
901 for(register int j=1;j<=8;++j)
902 for(register int k=1;k<=8;++k)
903 for(register int l=1;l<=8;++l){
904 register double p=pre[sa[k]][lim];
905 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
906 for(register int q=0;q<=16;++q){
907 register double gl=g[abs(val)][q];
908 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
909 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
910 }
911 }
912 }
913 inline void saknxdw(register int id,register int lim,register int val){
914 register int flag=(val<0)?-1:1;
915 for(register int i=1;i<=8;++i)
916 for(register int j=1;j<=8;++j)
917 for(register int k=1;k<=8;++k)
918 for(register int l=1;l<=8;++l){
919 register double p=pre[sa[k]][lim];
920 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
921 for(register int q=0;q<=16;++q){
922 register double gl=g[abs(val)][q];
923 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
924 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
925 }
926 }
927 }
928 inline void knmixdw(register int id,register int lim,register int val){
929 register int flag=(val<0)?-1:1;
930 for(register int i=1;i<=8;++i)
931 for(register int j=1;j<=8;++j)
932 for(register int k=1;k<=8;++k)
933 for(register int l=1;l<=8;++l){
934 register double p=pre[kn[l]][lim];
935 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
936 for(register int q=0;q<=16;++q){
937 register double gl=g[abs(val)][q];
938 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
939 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
940 }
941 }
942 }
943 inline void knspxdw(register int id,register int lim,register int val){
944 register int flag=(val<0)?-1:1;
945 for(register int i=1;i<=8;++i)
946 for(register int j=1;j<=8;++j)
947 for(register int k=1;k<=8;++k)
948 for(register int l=1;l<=8;++l){
949 register double p=pre[kn[l]][lim];
950 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
951 for(register int q=0;q<=16;++q){
952 register double gl=g[abs(val)][q];
953 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
954 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
955 }
956 }
957 }
958 inline void knsaxdw(register int id,register int lim,register int val){
959 register int flag=(val<0)?-1:1;
960 for(register int i=1;i<=8;++i)
961 for(register int j=1;j<=8;++j)
962 for(register int k=1;k<=8;++k)
963 for(register int l=1;l<=8;++l){
964 register double p=pre[kn[l]][lim];
965 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
966 for(register int q=0;q<=16;++q){
967 register double gl=g[abs(val)][q];
968 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
969 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
970 }
971 }
972 }
973 inline void knknxdw(register int id,register int lim,register int val){
974 register int flag=(val<0)?-1:1;
975 for(register int i=1;i<=8;++i)
976 for(register int j=1;j<=8;++j)
977 for(register int k=1;k<=8;++k)
978 for(register int l=1;l<=8;++l){
979 register double p=pre[kn[l]][lim];
980 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
981 for(register int q=0;q<=16;++q){
982 register double gl=g[abs(val)][q];
983 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
984 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
985 }
986 }
987 }
988 inline void mimixw(register int id,register int lim,register int val){
989 register int flag=(val<0)?-1:1;
990 for(register int i=1;i<=8;++i)
991 for(register int j=1;j<=8;++j)
992 for(register int k=1;k<=8;++k)
993 for(register int l=1;l<=8;++l){
994 register double p=pre[mi[i]][lim-1];
995 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
996 for(register int q=0;q<=16;++q){
997 register double gl=g[abs(val)][q];
998 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
999 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1000 }
1001 }
1002 }
1003 inline void mispxw(register int id,register int lim,register int val){
1004 register int flag=(val<0)?-1:1;
1005 for(register int i=1;i<=8;++i)
1006 for(register int j=1;j<=8;++j)
1007 for(register int k=1;k<=8;++k)
1008 for(register int l=1;l<=8;++l){
1009 register double p=pre[mi[i]][lim-1];
1010 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1011 for(register int q=0;q<=16;++q){
1012 register double gl=g[abs(val)][q];
1013 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1014 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1015 }
1016 }
1017 }
1018 inline void misaxw(register int id,register int lim,register int val){
1019 register int flag=(val<0)?-1:1;
1020 for(register int i=1;i<=8;++i)
1021 for(register int j=1;j<=8;++j)
1022 for(register int k=1;k<=8;++k)
1023 for(register int l=1;l<=8;++l){
1024 register double p=pre[mi[i]][lim-1];
1025 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1026 for(register int q=0;q<=16;++q){
1027 register double gl=g[abs(val)][q];
1028 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1029 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1030 }
1031 }
1032 }
1033 inline void miknxw(register int id,register int lim,register int val){
1034 register int flag=(val<0)?-1:1;
1035 for(register int i=1;i<=8;++i)
1036 for(register int j=1;j<=8;++j)
1037 for(register int k=1;k<=8;++k)
1038 for(register int l=1;l<=8;++l){
1039 register double p=pre[mi[i]][lim-1];
1040 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1041 for(register int q=0;q<=16;++q){
1042 register double gl=g[abs(val)][q];
1043 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1044 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1045 }
1046 }
1047 }
1048 inline void spmixw(register int id,register int lim,register int val){
1049 register int flag=(val<0)?-1:1;
1050 for(register int i=1;i<=8;++i)
1051 for(register int j=1;j<=8;++j)
1052 for(register int k=1;k<=8;++k)
1053 for(register int l=1;l<=8;++l){
1054 register double p=pre[sp[j]][lim-1];
1055 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1056 for(register int q=0;q<=16;++q){
1057 register double gl=g[abs(val)][q];
1058 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1059 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1060 }
1061 }
1062 }
1063 inline void spspxw(register int id,register int lim,register int val){
1064 register int flag=(val<0)?-1:1;
1065 for(register int i=1;i<=8;++i)
1066 for(register int j=1;j<=8;++j)
1067 for(register int k=1;k<=8;++k)
1068 for(register int l=1;l<=8;++l){
1069 register double p=pre[sp[j]][lim-1];
1070 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1071 for(register int q=0;q<=16;++q){
1072 register double gl=g[abs(val)][q];
1073 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1074 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1075 }
1076 }
1077 }
1078 inline void spsaxw(register int id,register int lim,register int val){
1079 register int flag=(val<0)?-1:1;
1080 for(register int i=1;i<=8;++i)
1081 for(register int j=1;j<=8;++j)
1082 for(register int k=1;k<=8;++k)
1083 for(register int l=1;l<=8;++l){
1084 register double p=pre[sp[j]][lim-1];
1085 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1086 for(register int q=0;q<=16;++q){
1087 register double gl=g[abs(val)][q];
1088 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1089 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1090 }
1091 }
1092 }
1093 inline void spknxw(register int id,register int lim,register int val){
1094 register int flag=(val<0)?-1:1;
1095 for(register int i=1;i<=8;++i)
1096 for(register int j=1;j<=8;++j)
1097 for(register int k=1;k<=8;++k)
1098 for(register int l=1;l<=8;++l){
1099 register double p=pre[sp[j]][lim-1];
1100 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1101 for(register int q=0;q<=16;++q){
1102 register double gl=g[abs(val)][q];
1103 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1104 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1105 }
1106 }
1107 }
1108 inline void samixw(register int id,register int lim,register int val){
1109 register int flag=(val<0)?-1:1;
1110 for(register int i=1;i<=8;++i)
1111 for(register int j=1;j<=8;++j)
1112 for(register int k=1;k<=8;++k)
1113 for(register int l=1;l<=8;++l){
1114 register double p=pre[sa[k]][lim-1];
1115 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1116 for(register int q=0;q<=16;++q){
1117 register double gl=g[abs(val)][q];
1118 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1119 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1120 }
1121 }
1122 }
1123 inline void saspxw(register int id,register int lim,register int val){
1124 register int flag=(val<0)?-1:1;
1125 for(register int i=1;i<=8;++i)
1126 for(register int j=1;j<=8;++j)
1127 for(register int k=1;k<=8;++k)
1128 for(register int l=1;l<=8;++l){
1129 register double p=pre[sa[k]][lim-1];
1130 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1131 for(register int q=0;q<=16;++q){
1132 register double gl=g[abs(val)][q];
1133 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1134 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1135 }
1136 }
1137 }
1138 inline void sasaxw(register int id,register int lim,register int val){
1139 register int flag=(val<0)?-1:1;
1140 for(register int i=1;i<=8;++i)
1141 for(register int j=1;j<=8;++j)
1142 for(register int k=1;k<=8;++k)
1143 for(register int l=1;l<=8;++l){
1144 register double p=pre[sa[k]][lim-1];
1145 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1146 for(register int q=0;q<=16;++q){
1147 register double gl=g[abs(val)][q];
1148 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1149 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1150 }
1151 }
1152 }
1153 inline void saknxw(register int id,register int lim,register int val){
1154 register int flag=(val<0)?-1:1;
1155 for(register int i=1;i<=8;++i)
1156 for(register int j=1;j<=8;++j)
1157 for(register int k=1;k<=8;++k)
1158 for(register int l=1;l<=8;++l){
1159 register double p=pre[sa[k]][lim-1];
1160 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1161 for(register int q=0;q<=16;++q){
1162 register double gl=g[abs(val)][q];
1163 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1164 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1165 }
1166 }
1167 }
1168 inline void knmixw(register int id,register int lim,register int val){
1169 register int flag=(val<0)?-1:1;
1170 for(register int i=1;i<=8;++i)
1171 for(register int j=1;j<=8;++j)
1172 for(register int k=1;k<=8;++k)
1173 for(register int l=1;l<=8;++l){
1174 register double p=pre[kn[l]][lim-1];
1175 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1176 for(register int q=0;q<=16;++q){
1177 register double gl=g[abs(val)][q];
1178 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1179 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1180 }
1181 }
1182 }
1183 inline void knspxw(register int id,register int lim,register int val){
1184 register int flag=(val<0)?-1:1;
1185 for(register int i=1;i<=8;++i)
1186 for(register int j=1;j<=8;++j)
1187 for(register int k=1;k<=8;++k)
1188 for(register int l=1;l<=8;++l){
1189 register double p=pre[kn[l]][lim-1];
1190 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1191 for(register int q=0;q<=16;++q){
1192 register double gl=g[abs(val)][q];
1193 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1194 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1195 }
1196 }
1197 }
1198 inline void knsaxw(register int id,register int lim,register int val){
1199 register int flag=(val<0)?-1:1;
1200 for(register int i=1;i<=8;++i)
1201 for(register int j=1;j<=8;++j)
1202 for(register int k=1;k<=8;++k)
1203 for(register int l=1;l<=8;++l){
1204 register double p=pre[kn[l]][lim-1];
1205 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1206 for(register int q=0;q<=16;++q){
1207 register double gl=g[abs(val)][q];
1208 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1209 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1210 }
1211 }
1212 }
1213 inline void knknxw(register int id,register int lim,register int val){
1214 register int flag=(val<0)?-1:1;
1215 for(register int i=1;i<=8;++i)
1216 for(register int j=1;j<=8;++j)
1217 for(register int k=1;k<=8;++k)
1218 for(register int l=1;l<=8;++l){
1219 register double p=pre[kn[l]][lim-1];
1220 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1221 for(register int q=0;q<=16;++q){
1222 register double gl=g[abs(val)][q];
1223 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1224 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1225 }
1226 }
1227 }
1228 inline void mimiddw(register int id,register int lim,register int val){
1229 register int flag=(val<0)?-1:1;
1230 for(register int i=1;i<=8;++i)
1231 for(register int j=1;j<=8;++j)
1232 for(register int k=1;k<=8;++k)
1233 for(register int l=1;l<=8;++l){
1234 register double p=suf[mi[i]][lim];
1235 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1236 for(register int q=0;q<=16;++q){
1237 register double gl=g[abs(val)][q];
1238 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1239 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1240 }
1241 }
1242 }
1243 inline void mispddw(register int id,register int lim,register int val){
1244 register int flag=(val<0)?-1:1;
1245 for(register int i=1;i<=8;++i)
1246 for(register int j=1;j<=8;++j)
1247 for(register int k=1;k<=8;++k)
1248 for(register int l=1;l<=8;++l){
1249 register double p=suf[mi[i]][lim];
1250 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1251 for(register int q=0;q<=16;++q){
1252 register double gl=g[abs(val)][q];
1253 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1254 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1255 }
1256 }
1257 }
1258 inline void misaddw(register int id,register int lim,register int val){
1259 register int flag=(val<0)?-1:1;
1260 for(register int i=1;i<=8;++i)
1261 for(register int j=1;j<=8;++j)
1262 for(register int k=1;k<=8;++k)
1263 for(register int l=1;l<=8;++l){
1264 register double p=suf[mi[i]][lim];
1265 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1266 for(register int q=0;q<=16;++q){
1267 register double gl=g[abs(val)][q];
1268 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1269 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1270 }
1271 }
1272 }
1273 inline void miknddw(register int id,register int lim,register int val){
1274 register int flag=(val<0)?-1:1;
1275 for(register int i=1;i<=8;++i)
1276 for(register int j=1;j<=8;++j)
1277 for(register int k=1;k<=8;++k)
1278 for(register int l=1;l<=8;++l){
1279 register double p=suf[mi[i]][lim];
1280 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1281 for(register int q=0;q<=16;++q){
1282 register double gl=g[abs(val)][q];
1283 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1284 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1285 }
1286 }
1287 }
1288 inline void spmiddw(register int id,register int lim,register int val){
1289 register int flag=(val<0)?-1:1;
1290 for(register int i=1;i<=8;++i)
1291 for(register int j=1;j<=8;++j)
1292 for(register int k=1;k<=8;++k)
1293 for(register int l=1;l<=8;++l){
1294 register double p=suf[sp[j]][lim];
1295 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1296 for(register int q=0;q<=16;++q){
1297 register double gl=g[abs(val)][q];
1298 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1299 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1300 }
1301 }
1302 }
1303 inline void spspddw(register int id,register int lim,register int val){
1304 register int flag=(val<0)?-1:1;
1305 for(register int i=1;i<=8;++i)
1306 for(register int j=1;j<=8;++j)
1307 for(register int k=1;k<=8;++k)
1308 for(register int l=1;l<=8;++l){
1309 register double p=suf[sp[j]][lim];
1310 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1311 for(register int q=0;q<=16;++q){
1312 register double gl=g[abs(val)][q];
1313 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1314 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1315 }
1316 }
1317 }
1318 inline void spsaddw(register int id,register int lim,register int val){
1319 register int flag=(val<0)?-1:1;
1320 for(register int i=1;i<=8;++i)
1321 for(register int j=1;j<=8;++j)
1322 for(register int k=1;k<=8;++k)
1323 for(register int l=1;l<=8;++l){
1324 register double p=suf[sp[j]][lim];
1325 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1326 for(register int q=0;q<=16;++q){
1327 register double gl=g[abs(val)][q];
1328 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1329 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1330 }
1331 }
1332 }
1333 inline void spknddw(register int id,register int lim,register int val){
1334 register int flag=(val<0)?-1:1;
1335 for(register int i=1;i<=8;++i)
1336 for(register int j=1;j<=8;++j)
1337 for(register int k=1;k<=8;++k)
1338 for(register int l=1;l<=8;++l){
1339 register double p=suf[sp[j]][lim];
1340 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1341 for(register int q=0;q<=16;++q){
1342 register double gl=g[abs(val)][q];
1343 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1344 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1345 }
1346 }
1347 }
1348 inline void samiddw(register int id,register int lim,register int val){
1349 register int flag=(val<0)?-1:1;
1350 for(register int i=1;i<=8;++i)
1351 for(register int j=1;j<=8;++j)
1352 for(register int k=1;k<=8;++k)
1353 for(register int l=1;l<=8;++l){
1354 register double p=suf[sa[k]][lim];
1355 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1356 for(register int q=0;q<=16;++q){
1357 register double gl=g[abs(val)][q];
1358 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1359 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1360 }
1361 }
1362 }
1363 inline void saspddw(register int id,register int lim,register int val){
1364 register int flag=(val<0)?-1:1;
1365 for(register int i=1;i<=8;++i)
1366 for(register int j=1;j<=8;++j)
1367 for(register int k=1;k<=8;++k)
1368 for(register int l=1;l<=8;++l){
1369 register double p=suf[sa[k]][lim];
1370 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1371 for(register int q=0;q<=16;++q){
1372 register double gl=g[abs(val)][q];
1373 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1374 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1375 }
1376 }
1377 }
1378 inline void sasaddw(register int id,register int lim,register int val){
1379 register int flag=(val<0)?-1:1;
1380 for(register int i=1;i<=8;++i)
1381 for(register int j=1;j<=8;++j)
1382 for(register int k=1;k<=8;++k)
1383 for(register int l=1;l<=8;++l){
1384 register double p=suf[sa[k]][lim];
1385 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1386 for(register int q=0;q<=16;++q){
1387 register double gl=g[abs(val)][q];
1388 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1389 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1390 }
1391 }
1392 }
1393 inline void saknddw(register int id,register int lim,register int val){
1394 register int flag=(val<0)?-1:1;
1395 for(register int i=1;i<=8;++i)
1396 for(register int j=1;j<=8;++j)
1397 for(register int k=1;k<=8;++k)
1398 for(register int l=1;l<=8;++l){
1399 register double p=suf[sa[k]][lim];
1400 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1401 for(register int q=0;q<=16;++q){
1402 register double gl=g[abs(val)][q];
1403 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1404 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1405 }
1406 }
1407 }
1408 inline void knmiddw(register int id,register int lim,register int val){
1409 register int flag=(val<0)?-1:1;
1410 for(register int i=1;i<=8;++i)
1411 for(register int j=1;j<=8;++j)
1412 for(register int k=1;k<=8;++k)
1413 for(register int l=1;l<=8;++l){
1414 register double p=suf[kn[l]][lim];
1415 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1416 for(register int q=0;q<=16;++q){
1417 register double gl=g[abs(val)][q];
1418 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1419 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1420 }
1421 }
1422 }
1423 inline void knspddw(register int id,register int lim,register int val){
1424 register int flag=(val<0)?-1:1;
1425 for(register int i=1;i<=8;++i)
1426 for(register int j=1;j<=8;++j)
1427 for(register int k=1;k<=8;++k)
1428 for(register int l=1;l<=8;++l){
1429 register double p=suf[kn[l]][lim];
1430 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1431 for(register int q=0;q<=16;++q){
1432 register double gl=g[abs(val)][q];
1433 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1434 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1435 }
1436 }
1437 }
1438 inline void knsaddw(register int id,register int lim,register int val){
1439 register int flag=(val<0)?-1:1;
1440 for(register int i=1;i<=8;++i)
1441 for(register int j=1;j<=8;++j)
1442 for(register int k=1;k<=8;++k)
1443 for(register int l=1;l<=8;++l){
1444 register double p=suf[kn[l]][lim];
1445 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1446 for(register int q=0;q<=16;++q){
1447 register double gl=g[abs(val)][q];
1448 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1449 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1450 }
1451 }
1452 }
1453 inline void knknddw(register int id,register int lim,register int val){
1454 register int flag=(val<0)?-1:1;
1455 for(register int i=1;i<=8;++i)
1456 for(register int j=1;j<=8;++j)
1457 for(register int k=1;k<=8;++k)
1458 for(register int l=1;l<=8;++l){
1459 register double p=suf[kn[l]][lim];
1460 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1461 for(register int q=0;q<=16;++q){
1462 register double gl=g[abs(val)][q];
1463 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1464 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1465 }
1466 }
1467 }
1468 inline void mimidw(register int id,register int lim,register int val){
1469 register int flag=(val<0)?-1:1;
1470 for(register int i=1;i<=8;++i)
1471 for(register int j=1;j<=8;++j)
1472 for(register int k=1;k<=8;++k)
1473 for(register int l=1;l<=8;++l){
1474 register double p=suf[mi[i]][lim+1];
1475 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1476 for(register int q=0;q<=16;++q){
1477 register double gl=g[abs(val)][q];
1478 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1479 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1480 }
1481 }
1482 }
1483 inline void mispdw(register int id,register int lim,register int val){
1484 register int flag=(val<0)?-1:1;
1485 for(register int i=1;i<=8;++i)
1486 for(register int j=1;j<=8;++j)
1487 for(register int k=1;k<=8;++k)
1488 for(register int l=1;l<=8;++l){
1489 register double p=suf[mi[i]][lim+1];
1490 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1491 for(register int q=0;q<=16;++q){
1492 register double gl=g[abs(val)][q];
1493 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1494 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1495 }
1496 }
1497 }
1498 inline void misadw(register int id,register int lim,register int val){
1499 register int flag=(val<0)?-1:1;
1500 for(register int i=1;i<=8;++i)
1501 for(register int j=1;j<=8;++j)
1502 for(register int k=1;k<=8;++k)
1503 for(register int l=1;l<=8;++l){
1504 register double p=suf[mi[i]][lim+1];
1505 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1506 for(register int q=0;q<=16;++q){
1507 register double gl=g[abs(val)][q];
1508 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1509 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1510 }
1511 }
1512 }
1513 inline void mikndw(register int id,register int lim,register int val){
1514 register int flag=(val<0)?-1:1;
1515 for(register int i=1;i<=8;++i)
1516 for(register int j=1;j<=8;++j)
1517 for(register int k=1;k<=8;++k)
1518 for(register int l=1;l<=8;++l){
1519 register double p=suf[mi[i]][lim+1];
1520 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1521 for(register int q=0;q<=16;++q){
1522 register double gl=g[abs(val)][q];
1523 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1524 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1525 }
1526 }
1527 }
1528 inline void spmidw(register int id,register int lim,register int val){
1529 register int flag=(val<0)?-1:1;
1530 for(register int i=1;i<=8;++i)
1531 for(register int j=1;j<=8;++j)
1532 for(register int k=1;k<=8;++k)
1533 for(register int l=1;l<=8;++l){
1534 register double p=suf[sp[j]][lim+1];
1535 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1536 for(register int q=0;q<=16;++q){
1537 register double gl=g[abs(val)][q];
1538 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1539 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1540 }
1541 }
1542 }
1543 inline void spspdw(register int id,register int lim,register int val){
1544 register int flag=(val<0)?-1:1;
1545 for(register int i=1;i<=8;++i)
1546 for(register int j=1;j<=8;++j)
1547 for(register int k=1;k<=8;++k)
1548 for(register int l=1;l<=8;++l){
1549 register double p=suf[sp[j]][lim+1];
1550 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1551 for(register int q=0;q<=16;++q){
1552 register double gl=g[abs(val)][q];
1553 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1554 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1555 }
1556 }
1557 }
1558 inline void spsadw(register int id,register int lim,register int val){
1559 register int flag=(val<0)?-1:1;
1560 for(register int i=1;i<=8;++i)
1561 for(register int j=1;j<=8;++j)
1562 for(register int k=1;k<=8;++k)
1563 for(register int l=1;l<=8;++l){
1564 register double p=suf[sp[j]][lim+1];
1565 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1566 for(register int q=0;q<=16;++q){
1567 register double gl=g[abs(val)][q];
1568 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1569 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1570 }
1571 }
1572 }
1573 inline void spkndw(register int id,register int lim,register int val){
1574 register int flag=(val<0)?-1:1;
1575 for(register int i=1;i<=8;++i)
1576 for(register int j=1;j<=8;++j)
1577 for(register int k=1;k<=8;++k)
1578 for(register int l=1;l<=8;++l){
1579 register double p=suf[sp[j]][lim+1];
1580 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1581 for(register int q=0;q<=16;++q){
1582 register double gl=g[abs(val)][q];
1583 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1584 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1585 }
1586 }
1587 }
1588 inline void samidw(register int id,register int lim,register int val){
1589 register int flag=(val<0)?-1:1;
1590 for(register int i=1;i<=8;++i)
1591 for(register int j=1;j<=8;++j)
1592 for(register int k=1;k<=8;++k)
1593 for(register int l=1;l<=8;++l){
1594 register double p=suf[sa[k]][lim+1];
1595 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1596 for(register int q=0;q<=16;++q){
1597 register double gl=g[abs(val)][q];
1598 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1599 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1600 }
1601 }
1602 }
1603 inline void saspdw(register int id,register int lim,register int val){
1604 register int flag=(val<0)?-1:1;
1605 for(register int i=1;i<=8;++i)
1606 for(register int j=1;j<=8;++j)
1607 for(register int k=1;k<=8;++k)
1608 for(register int l=1;l<=8;++l){
1609 register double p=suf[sa[k]][lim+1];
1610 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1611 for(register int q=0;q<=16;++q){
1612 register double gl=g[abs(val)][q];
1613 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1614 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1615 }
1616 }
1617 }
1618 inline void sasadw(register int id,register int lim,register int val){
1619 register int flag=(val<0)?-1:1;
1620 for(register int i=1;i<=8;++i)
1621 for(register int j=1;j<=8;++j)
1622 for(register int k=1;k<=8;++k)
1623 for(register int l=1;l<=8;++l){
1624 register double p=suf[sa[k]][lim+1];
1625 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1626 for(register int q=0;q<=16;++q){
1627 register double gl=g[abs(val)][q];
1628 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1629 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1630 }
1631 }
1632 }
1633 inline void sakndw(register int id,register int lim,register int val){
1634 register int flag=(val<0)?-1:1;
1635 for(register int i=1;i<=8;++i)
1636 for(register int j=1;j<=8;++j)
1637 for(register int k=1;k<=8;++k)
1638 for(register int l=1;l<=8;++l){
1639 register double p=suf[sa[k]][lim+1];
1640 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1641 for(register int q=0;q<=16;++q){
1642 register double gl=g[abs(val)][q];
1643 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1644 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1645 }
1646 }
1647 }
1648 inline void knmidw(register int id,register int lim,register int val){
1649 register int flag=(val<0)?-1:1;
1650 for(register int i=1;i<=8;++i)
1651 for(register int j=1;j<=8;++j)
1652 for(register int k=1;k<=8;++k)
1653 for(register int l=1;l<=8;++l){
1654 register double p=suf[kn[l]][lim+1];
1655 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1656 for(register int q=0;q<=16;++q){
1657 register double gl=g[abs(val)][q];
1658 if(i+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1659 else f[id][min(8,i+q*flag)][j][k][l]+=f[id-1][i][j][k][l]*p*gl;
1660 }
1661 }
1662 }
1663 inline void knspdw(register int id,register int lim,register int val){
1664 register int flag=(val<0)?-1:1;
1665 for(register int i=1;i<=8;++i)
1666 for(register int j=1;j<=8;++j)
1667 for(register int k=1;k<=8;++k)
1668 for(register int l=1;l<=8;++l){
1669 register double p=suf[kn[l]][lim+1];
1670 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1671 for(register int q=0;q<=16;++q){
1672 register double gl=g[abs(val)][q];
1673 if(j+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1674 else f[id][i][min(8,j+q*flag)][k][l]+=f[id-1][i][j][k][l]*p*gl;
1675 }
1676 }
1677 }
1678 inline void knsadw(register int id,register int lim,register int val){
1679 register int flag=(val<0)?-1:1;
1680 for(register int i=1;i<=8;++i)
1681 for(register int j=1;j<=8;++j)
1682 for(register int k=1;k<=8;++k)
1683 for(register int l=1;l<=8;++l){
1684 register double p=suf[kn[l]][lim+1];
1685 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1686 for(register int q=0;q<=16;++q){
1687 register double gl=g[abs(val)][q];
1688 if(k+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1689 else f[id][i][j][min(8,k+q*flag)][l]+=f[id-1][i][j][k][l]*p*gl;
1690 }
1691 }
1692 }
1693 inline void knkndw(register int id,register int lim,register int val){
1694 register int flag=(val<0)?-1:1;
1695 for(register int i=1;i<=8;++i)
1696 for(register int j=1;j<=8;++j)
1697 for(register int k=1;k<=8;++k)
1698 for(register int l=1;l<=8;++l){
1699 register double p=suf[kn[l]][lim+1];
1700 f[id][i][j][k][l]+=f[id-1][i][j][k][l]*(1-p);
1701 for(register int q=0;q<=16;++q){
1702 register double gl=g[abs(val)][q];
1703 if(l+q*flag<=0) ANS+=f[id-1][i][j][k][l]*p*gl;
1704 else f[id][i][j][k][min(8,l+q*flag)]+=f[id-1][i][j][k][l]*p*gl;
1705 }
1706 }
1707 }
1708 signed main(){
1709 scanf("%s%d",s+1,&MI);for(register int i=1;i<=8;++i) mi[i]=s[i]-'0';
1710 scanf("%s%d",s+1,&SP);for(register int i=1;i<=8;++i) sp[i]=s[i]-'0';
1711 scanf("%s%d",s+1,&SA);for(register int i=1;i<=8;++i) sa[i]=s[i]-'0';
1712 scanf("%s%d",s+1,&KN);for(register int i=1;i<=8;++i) kn[i]=s[i]-'0';
1713 f[0][MI][SP][SA][KN]=1.0;
1714 scanf("%d",&n); g[0][0]=1.0;
1715 for(register int i=0;i<8;++i)
1716 for(register int j=0;j<=16;++j){
1717 g[i+1][j+0]+=g[i][j]*1.0/3.0;
1718 g[i+1][j+1]+=g[i][j]*1.0/3.0;
1719 g[i+1][j+2]+=g[i][j]*1.0/3.0;
1720 }
1721 for(register int i=1;i<=8;++i){
1722 pre[i][0]=g[i][0];
1723 for(register int j=1;j<=16;++j)
1724 pre[i][j]=g[i][j]+pre[i][j-1];
1725 }
1726 for(register int i=8;i>=1;--i){
1727 suf[i][17]=g[i][17];
1728 for(register int j=16;j>=0;--j)
1729 suf[i][j]=g[i][j]+suf[i][j+1];
1730 }
1731 for(register int id=1;id<=n;++id){
1732 scanf("%s%s",s1+1,s2+1);
1733 if(s2[1]=='+'||s2[1]=='-'){
1734 register int val=s2[2]-'0';
1735 if(s2[1]=='-') val=-val;
1736 if(s2[3]=='?'){
1737 register int dat=abs(val);
1738 register int flag=(s2[1]=='-')?-1:1;
1739 for(register int i=0;i<=16;++i){
1740 if(s1[2]=='i') addmi(id,i*flag,g[dat][i]);
1741 if(s1[2]=='p') addsp(id,i*flag,g[dat][i]);
1742 if(s1[2]=='a') addsa(id,i*flag,g[dat][i]);
1743 if(s1[2]=='n') addkn(id,i*flag,g[dat][i]);
1744 }
1745 }
1746 else{
1747 if(s1[2]=='i') addmi(id,val,1);
1748 if(s1[2]=='p') addsp(id,val,1);
1749 if(s1[2]=='a') addsa(id,val,1);
1750 if(s1[2]=='n') addkn(id,val,1);
1751 }
1752 continue;
1753 }
1754 else if(s2[1]=='>'||s2[1]=='<'){
1755 register int dat;
1756 scanf("%d%s%s",&dat,s3+1,s4+1);
1757 register int val=s4[2]-'0';
1758 register int flag=(s4[1]=='-')?-1:1;
1759 if(s4[3]=='?'){
1760 if(s2[1]=='>'&&s2[2]=='='){
1761 if(s1[2]=='i'){
1762 if(s3[2]=='i') mimiddw(id,dat,val*flag);
1763 if(s3[2]=='p') mispddw(id,dat,val*flag);
1764 if(s3[2]=='a') misaddw(id,dat,val*flag);
1765 if(s3[2]=='n') miknddw(id,dat,val*flag);
1766 continue;
1767 }
1768 if(s1[2]=='p'){
1769 if(s3[2]=='i') spmiddw(id,dat,val*flag);
1770 if(s3[2]=='p') spspddw(id,dat,val*flag);
1771 if(s3[2]=='a') spsaddw(id,dat,val*flag);
1772 if(s3[2]=='n') spknddw(id,dat,val*flag);
1773 continue;
1774 }
1775 if(s1[2]=='a'){
1776 if(s3[2]=='i') samiddw(id,dat,val*flag);
1777 if(s3[2]=='p') saspddw(id,dat,val*flag);
1778 if(s3[2]=='a') sasaddw(id,dat,val*flag);
1779 if(s3[2]=='n') saknddw(id,dat,val*flag);
1780 continue;
1781 }
1782 if(s1[2]=='n'){
1783 if(s3[2]=='i') knmiddw(id,dat,val*flag);
1784 if(s3[2]=='p') knspddw(id,dat,val*flag);
1785 if(s3[2]=='a') knsaddw(id,dat,val*flag);
1786 if(s3[2]=='n') knknddw(id,dat,val*flag);
1787 continue;
1788 }
1789 }
1790 else if(s2[1]=='<'&&s2[2]=='='){
1791 if(s1[2]=='i'){
1792 if(s3[2]=='i') mimixdw(id,dat,val*flag);
1793 if(s3[2]=='p') mispxdw(id,dat,val*flag);
1794 if(s3[2]=='a') misaxdw(id,dat,val*flag);
1795 if(s3[2]=='n') miknxdw(id,dat,val*flag);
1796 continue;
1797 }
1798 if(s1[2]=='p'){
1799 if(s3[2]=='i') spmixdw(id,dat,val*flag);
1800 if(s3[2]=='p') spspxdw(id,dat,val*flag);
1801 if(s3[2]=='a') spsaxdw(id,dat,val*flag);
1802 if(s3[2]=='n') spknxdw(id,dat,val*flag);
1803 continue;
1804 }
1805 if(s1[2]=='a'){
1806 if(s3[2]=='i') samixdw(id,dat,val*flag);
1807 if(s3[2]=='p') saspxdw(id,dat,val*flag);
1808 if(s3[2]=='a') sasaxdw(id,dat,val*flag);
1809 if(s3[2]=='n') saknxdw(id,dat,val*flag);
1810 continue;
1811 }
1812 if(s1[2]=='n'){
1813 if(s3[2]=='i') knmixdw(id,dat,val*flag);
1814 if(s3[2]=='p') knspxdw(id,dat,val*flag);
1815 if(s3[2]=='a') knsaxdw(id,dat,val*flag);
1816 if(s3[2]=='n') knknxdw(id,dat,val*flag);
1817 continue;
1818 }
1819 }
1820 else if(s2[1]=='>'){
1821 if(s1[2]=='i'){
1822 if(s3[2]=='i') mimidw(id,dat,val*flag);
1823 if(s3[2]=='p') mispdw(id,dat,val*flag);
1824 if(s3[2]=='a') misadw(id,dat,val*flag);
1825 if(s3[2]=='n') mikndw(id,dat,val*flag);
1826 continue;
1827 }
1828 if(s1[2]=='p'){
1829 if(s3[2]=='i') spmidw(id,dat,val*flag);
1830 if(s3[2]=='p') spspdw(id,dat,val*flag);
1831 if(s3[2]=='a') spsadw(id,dat,val*flag);
1832 if(s3[2]=='n') spkndw(id,dat,val*flag);
1833 continue;
1834 }
1835 if(s1[2]=='a'){
1836 if(s3[2]=='i') samidw(id,dat,val*flag);
1837 if(s3[2]=='p') saspdw(id,dat,val*flag);
1838 if(s3[2]=='a') sasadw(id,dat,val*flag);
1839 if(s3[2]=='n') sakndw(id,dat,val*flag);
1840 continue;
1841 }
1842 if(s1[2]=='n'){
1843 if(s3[2]=='i') knmidw(id,dat,val*flag);
1844 if(s3[2]=='p') knspdw(id,dat,val*flag);
1845 if(s3[2]=='a') knsadw(id,dat,val*flag);
1846 if(s3[2]=='n') knkndw(id,dat,val*flag);
1847 continue;
1848 }
1849 }
1850 else if(s2[1]=='<'){
1851 if(s1[2]=='i'){
1852 if(s3[2]=='i') mimixw(id,dat,val*flag);
1853 if(s3[2]=='p') mispxw(id,dat,val*flag);
1854 if(s3[2]=='a') misaxw(id,dat,val*flag);
1855 if(s3[2]=='n') miknxw(id,dat,val*flag);
1856 continue;
1857 }
1858 if(s1[2]=='p'){
1859 if(s3[2]=='i') spmixw(id,dat,val*flag);
1860 if(s3[2]=='p') spspxw(id,dat,val*flag);
1861 if(s3[2]=='a') spsaxw(id,dat,val*flag);
1862 if(s3[2]=='n') spknxw(id,dat,val*flag);
1863 continue;
1864 }
1865 if(s1[2]=='a'){
1866 if(s3[2]=='i') samixw(id,dat,val*flag);
1867 if(s3[2]=='p') saspxw(id,dat,val*flag);
1868 if(s3[2]=='a') sasaxw(id,dat,val*flag);
1869 if(s3[2]=='n') saknxw(id,dat,val*flag);
1870 continue;
1871 }
1872 if(s1[2]=='n'){
1873 if(s3[2]=='i') knmixw(id,dat,val*flag);
1874 if(s3[2]=='p') knspxw(id,dat,val*flag);
1875 if(s3[2]=='a') knsaxw(id,dat,val*flag);
1876 if(s3[2]=='n') knknxw(id,dat,val*flag);
1877 continue;
1878 }
1879 }
1880 }
1881 else{
1882 if(s2[1]=='>'&&s2[2]=='='){
1883 if(s1[2]=='i'){
1884 if(s3[2]=='i') mimidd(id,dat,val*flag);
1885 if(s3[2]=='p') mispdd(id,dat,val*flag);
1886 if(s3[2]=='a') misadd(id,dat,val*flag);
1887 if(s3[2]=='n') mikndd(id,dat,val*flag);
1888 continue;
1889 }
1890 if(s1[2]=='p'){
1891 if(s3[2]=='i') spmidd(id,dat,val*flag);
1892 if(s3[2]=='p') spspdd(id,dat,val*flag);
1893 if(s3[2]=='a') spsadd(id,dat,val*flag);
1894 if(s3[2]=='n') spkndd(id,dat,val*flag);
1895 continue;
1896 }
1897 if(s1[2]=='a'){
1898 if(s3[2]=='i') samidd(id,dat,val*flag);
1899 if(s3[2]=='p') saspdd(id,dat,val*flag);
1900 if(s3[2]=='a') sasadd(id,dat,val*flag);
1901 if(s3[2]=='n') sakndd(id,dat,val*flag);
1902 continue;
1903 }
1904 if(s1[2]=='n'){
1905 if(s3[2]=='i') knmidd(id,dat,val*flag);
1906 if(s3[2]=='p') knspdd(id,dat,val*flag);
1907 if(s3[2]=='a') knsadd(id,dat,val*flag);
1908 if(s3[2]=='n') knkndd(id,dat,val*flag);
1909 continue;
1910 }
1911 }
1912 else if(s2[1]=='<'&&s2[2]=='='){
1913 if(s1[2]=='i'){
1914 if(s3[2]=='i') mimixd(id,dat,val*flag);
1915 if(s3[2]=='p') mispxd(id,dat,val*flag);
1916 if(s3[2]=='a') misaxd(id,dat,val*flag);
1917 if(s3[2]=='n') miknxd(id,dat,val*flag);
1918 continue;
1919 }
1920 if(s1[2]=='p'){
1921 if(s3[2]=='i') spmixd(id,dat,val*flag);
1922 if(s3[2]=='p') spspxd(id,dat,val*flag);
1923 if(s3[2]=='a') spsaxd(id,dat,val*flag);
1924 if(s3[2]=='n') spknxd(id,dat,val*flag);
1925 continue;
1926 }
1927 if(s1[2]=='a'){
1928 if(s3[2]=='i') samixd(id,dat,val*flag);
1929 if(s3[2]=='p') saspxd(id,dat,val*flag);
1930 if(s3[2]=='a') sasaxd(id,dat,val*flag);
1931 if(s3[2]=='n') saknxd(id,dat,val*flag);
1932 continue;
1933 }
1934 if(s1[2]=='n'){
1935 if(s3[2]=='i') knmixd(id,dat,val*flag);
1936 if(s3[2]=='p') knspxd(id,dat,val*flag);
1937 if(s3[2]=='a') knsaxd(id,dat,val*flag);
1938 if(s3[2]=='n') knknxd(id,dat,val*flag);
1939 continue;
1940 }
1941 }
1942 else if(s2[1]=='>'){
1943 if(s1[2]=='i'){
1944 if(s3[2]=='i') mimid(id,dat,val*flag);
1945 if(s3[2]=='p') mispd(id,dat,val*flag);
1946 if(s3[2]=='a') misad(id,dat,val*flag);
1947 if(s3[2]=='n') miknd(id,dat,val*flag);
1948 continue;
1949 }
1950 if(s1[2]=='p'){
1951 if(s3[2]=='i') spmid(id,dat,val*flag);
1952 if(s3[2]=='p') spspd(id,dat,val*flag);
1953 if(s3[2]=='a') spsad(id,dat,val*flag);
1954 if(s3[2]=='n') spknd(id,dat,val*flag);
1955 continue;
1956 }
1957 if(s1[2]=='a'){
1958 if(s3[2]=='i') samid(id,dat,val*flag);
1959 if(s3[2]=='p') saspd(id,dat,val*flag);
1960 if(s3[2]=='a') sasad(id,dat,val*flag);
1961 if(s3[2]=='n') saknd(id,dat,val*flag);
1962 continue;
1963 }
1964 if(s1[2]=='n'){
1965 if(s3[2]=='i') knmid(id,dat,val*flag);
1966 if(s3[2]=='p') knspd(id,dat,val*flag);
1967 if(s3[2]=='a') knsad(id,dat,val*flag);
1968 if(s3[2]=='n') knknd(id,dat,val*flag);
1969 continue;
1970 }
1971 }
1972 else if(s2[1]=='<'){
1973 if(s1[2]=='i'){
1974 if(s3[2]=='i') mimix(id,dat,val*flag);
1975 if(s3[2]=='p') mispx(id,dat,val*flag);
1976 if(s3[2]=='a') misax(id,dat,val*flag);
1977 if(s3[2]=='n') miknx(id,dat,val*flag);
1978 continue;
1979 }
1980 if(s1[2]=='p'){
1981 if(s3[2]=='i') spmix(id,dat,val*flag);
1982 if(s3[2]=='p') spspx(id,dat,val*flag);
1983 if(s3[2]=='a') spsax(id,dat,val*flag);
1984 if(s3[2]=='n') spknx(id,dat,val*flag);
1985 continue;
1986 }
1987 if(s1[2]=='a'){
1988 if(s3[2]=='i') samix(id,dat,val*flag);
1989 if(s3[2]=='p') saspx(id,dat,val*flag);
1990 if(s3[2]=='a') sasax(id,dat,val*flag);
1991 if(s3[2]=='n') saknx(id,dat,val*flag);
1992 continue;
1993 }
1994 if(s1[2]=='n'){
1995 if(s3[2]=='i') knmix(id,dat,val*flag);
1996 if(s3[2]=='p') knspx(id,dat,val*flag);
1997 if(s3[2]=='a') knsax(id,dat,val*flag);
1998 if(s3[2]=='n') knknx(id,dat,val*flag);
1999 continue;
2000 }
2001 }
2002 }
2003 }
2004 }
2005 printf("%.2lf\n",ANS*100.0);
2006 for(register int i=1;i<=8;++i)
2007 for(register int j=1;j<=8;++j)
2008 for(register int k=1;k<=8;++k)
2009 for(register int l=1;l<=8;++l){
2010 mig[mi[i]]+=f[n][i][j][k][l];
2011 spe[sp[j]]+=f[n][i][j][k][l];
2012 san[sa[k]]+=f[n][i][j][k][l];
2013 kno[kn[l]]+=f[n][i][j][k][l];
2014 }
2015 for(register int i=1;i<=8;++i) printf("%.2lf ",mig[i]*100.0); puts("");
2016 for(register int i=1;i<=8;++i) printf("%.2lf ",spe[i]*100.0); puts("");
2017 for(register int i=1;i<=8;++i) printf("%.2lf ",san[i]*100.0); puts("");
2018 for(register int i=1;i<=8;++i) printf("%.2lf ",kno[i]*100.0); puts("");
2019 }