0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
5
7
9
12
15
18
22
25
29
34
38
43
48
53
59
64
70
75
81
87
93
99
106
112
118
125
131
137
143
149
155
160
166
172
178
183
189
194
198
203
208
212
216
220
224
228
231
235
238
240
243
245
247
249
250
252
253
253
254
254
254
255
255
255
254
253
252
250
249
247
245
243
241
238
235
233
230
227
224
221
217
214
211
207
204
200
197
193
190
186
183
179
175
171
168
164
160
157
154
150
147
144
141
138
135
133
130
128
125
123
121
119
117
115
113
112
110
109
108
107
106
106
105
105
104
104
104
104
104
105
105
106
107
108
109
110
111
112
113
115
117
118
120
122
123
125
127
129
131
133
135
137
139
142
144
146
148
150
152
154
156
158
160
162
164
166
168
170
171
173
175
176
178
179
181
182
183
184
186
186
187
188
189
189
190
190
191
191
191
191
191
191
191
192
192
192
192
191
191
190
189
189
188
187
186
185
184
183
182
181
180
179
178
177
176
174
173
172
171
170
168
167
166
165
163
162
161
160
159
158
156
155
154
153
153
152
151
150
149
148
148
147
147
146
145
145
145
144
144
143
143
143
143
143
143
143
142
142
142
142
142
142
143
143
143
144
144
144
145
145
146
146
147
147
148
148
149
149
150
151
151
152
153
153
154
155
155
156
157
157
158
158
159
160
160
161
161
162
162
163
163
164
164
165
165
166
166
166
167
167
167
168
168
168
168
168
168
168
168
168
168
168
169
169
169
169
169
169
169
169
169
168
168
168
168
167
167
167
166
166
166
166
165
165
165
164
164
164
163
163
163
162
162
162
161
161
161
160
160
160
160
159
159
159
159
158
158
158
158
158
157
157
157
157
157
157
157
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
156
157
157
157
157
157
157
157
157
158
158
158
158
158
158
158
158
158
159
159
159
159
159
159
159
160
160
160
160
160
160
160
160
160
160
160
160
160
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
161
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
160
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
159
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
158
