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
80
254
254
255
254
169
98
254
255
254
254
254
151
63
0
0
0
0
0
0
0
0
0
0
0
0
0
0
80
253
253
253
253
253
253
253
253
253
253
253
253
233
158
27
0
0
0
0
0
0
0
0
0
0
0
0
80
253
253
253
253
253
253
253
253
253
253
253
253
253
253
215
34
0
0
0
0
0
0
0
0
0
0
0
36
200
155
253
228
113
113
113
215
253
253
253
253
253
253
253
202
34
0
0
0
0
0
0
0
0
0
0
0
21
11
34
28
0
5
44
75
253
253
253
253
253
253
253
253
60
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
60
136
253
253
253
253
253
253
253
253
253
197
31
0
0
0
0
0
0
0
0
0
0
0
0
0
0
36
227
253
253
253
253
253
253
253
229
226
81
28
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
44
253
253
253
253
253
253
223
147
15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
44
253
253
253
253
253
253
64
4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
44
253
253
253
253
253
253
253
155
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
87
219
253
253
253
253
253
253
175
167
28
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
6
8
14
182
229
253
253
253
253
101
71
17
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
69
249
253
253
253
253
253
163
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
24
128
211
253
253
253
251
228
70
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
53
253
253
253
253
253
78
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
36
36
36
36
138
219
253
253
253
253
253
78
0
0
0
0
0
0
0
0
0
0
0
0
100
115
115
172
253
253
253
253
253
253
253
253
253
253
209
43
0
0
0
0
0
0
0
0
0
0
0
0
219
253
253
253
253
253
253
253
253
253
253
253
253
227
37
0
0
0
0
0
0
0
0
0
0
0
0
0
152
253
253
253
253
253
253
253
253
253
253
172
156
37
0
0
0
0
0
0
0
0
0
0
0
0
0
0
14
78
217
253
253
253
253
253
253
95
78
13
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
