0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
55
59
23
0
0
0
0
0
0
0
0
0
0
20
253
147
14
0
0
0
0
0
0
0
0
0
0
0
233
251
96
0
0
0
0
0
0
0
0
0
0
110
251
251
57
0
0
0
0
0
0
0
0
0
0
123
245
251
96
0
0
0
0
0
0
0
0
0
0
214
251
251
57
0
0
0
0
0
0
0
0
10
129
245
251
251
216
29
0
0
0
0
0
0
0
0
0
214
251
251
57
0
0
0
0
0
0
0
0
59
251
251
251
251
96
0
0
0
0
0
0
0
0
0
61
228
251
251
57
0
0
0
0
0
0
0
0
59
251
251
251
190
37
0
0
0
0
0
0
0
0
61
214
251
251
251
57
0
0
0
0
0
0
0
0
59
251
251
217
23
0
0
0
0
0
0
0
0
0
98
251
251
251
134
9
0
0
0
0
0
0
0
0
59
251
251
224
78
78
18
78
78
78
79
78
78
78
145
251
251
251
115
0
0
0
0
0
0
0
0
0
59
251
251
251
251
251
162
251
251
251
253
251
251
251
251
251
251
251
115
0
0
0
0
0
0
0
0
0
59
251
251
251
251
251
251
251
251
251
253
251
251
251
251
251
251
190
26
0
0
0
0
0
0
0
0
0
0
91
235
253
253
253
253
253
253
253
255
253
253
253
253
253
253
174
0
0
0
0
0
0
0
0
0
0
0
0
94
134
179
178
233
214
134
134
135
134
134
152
251
251
242
93
0
0
0
0
0
0
0
0
0
0
0
0
0
0
30
29
65
53
0
0
0
0
0
39
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
219
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
233
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
109
244
251
251
111
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
175
251
251
251
202
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
121
245
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
233
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
83
251
251
231
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
