Skip to content

Instantly share code, notes, and snippets.

@angs
Created April 15, 2018 06:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save angs/0a17ff0ef08136770c7e7cedeaf4a4d9 to your computer and use it in GitHub Desktop.
Save angs/0a17ff0ef08136770c7e7cedeaf4a4d9 to your computer and use it in GitHub Desktop.
Fruit weights for code golf problem
160
200
156
151
164
181
162
151
175
180
170
182
174
169
165
167
156
180
153
163
193
185
177
173
138
180
161
165
172
150
161
158
133
177
148
150
165
167
172
181
159
137
162
176
184
185
161
150
183
171
162
172
176
185
188
179
188
162
151
155
184
177
155
164
155
172
174
155
162
165
176
148
152
183
180
178
176
148
161
192
164
155
159
163
146
170
178
170
163
185
180
156
187
164
154
162
179
173
175
180
145
172
148
171
149
174
165
164
132
167
183
162
162
169
183
180
165
182
153
177
170
167
170
145
168
157
206
162
179
169
194
177
187
162
184
131
159
168
155
183
177
164
151
158
140
168
161
172
174
181
172
165
181
171
173
142
201
160
156
187
173
159
169
191
162
167
188
175
170
161
160
162
158
173
177
180
174
184
174
184
172
193
193
173
181
155
170
170
167
166
179
173
168
167
169
179
179
170
167
152
163
153
176
183
159
174
182
186
176
174
164
169
165
198
182
172
188
172
137
186
167
172
159
170
137
166
185
142
157
152
164
195
147
174
160
157
174
147
162
190
165
184
164
179
176
178
167
181
184
193
184
186
172
143
167
147
171
166
172
172
170
170
185
180
174
166
163
161
177
159
174
187
162
162
162
164
197
158
175
175
185
154
186
178
145
152
149
185
196
178
188
160
152
198
190
174
171
167
163
174
176
163
185
185
169
169
152
159
177
190
172
178
179
196
149
151
177
179
158
161
154
159
158
155
164
159
177
179
162
168
193
175
163
159
190
174
173
191
182
185
162
150
167
170
198
167
183
176
191
186
186
170
167
183
187
146
162
164
158
160
166
160
175
192
191
135
153
160
161
158
181
147
160
185
161
150
170
168
183
165
156
158
172
172
165
201
162
163
158
156
188
182
176
183
163
156
165
172
177
165
166
179
172
167
186
148
156
155
145
157
156
176
165
192
161
177
150
164
170
171
173
197
166
158
157
180
153
170
173
159
154
175
147
156
168
165
198
190
178
164
154
175
183
182
162
167
159
186
174
170
193
152
181
180
165
170
174
200
184
173
174
189
177
162
165
143
148
156
170
155
169
189
149
161
163
139
162
167
164
164
161
175
178
160
176
166
173
183
179
188
163
175
187
173
173
182
166
161
163
156
171
165
185
183
181
186
192
193
192
167
190
180
142
158
159
177
173
171
163
166
164
179
165
178
164
173
179
168
179
159
167
184
174
150
172
181
169
162
189
189
155
164
189
164
171
160
190
169
156
176
164
180
153
188
192
158
178
186
170
194
195
209
174
160
167
175
171
157
166
169
181
167
179
176
166
172
166
163
188
177
179
170
155
173
184
161
174
168
171
167
177
148
163
169
187
168
171
173
163
187
154
158
182
189
154
161
187
162
167
155
184
150
174
194
178
165
166
150
169
175
166
158
181
197
178
154
182
181
182
183
163
186
166
174
179
182
161
165
194
178
176
174
162
190
161
176
167
186
162
164
181
164
167
181
166
178
174
153
192
193
168
171
178
183
158
168
173
166
154
179
173
166
146
171
180
167
189
194
189
175
152
186
134
185
170
176
158
179
180
203
163
164
179
139
158
161
186
165
203
177
167
177
171
148
151
183
168
149
169
151
182
193
161
172
161
170
181
192
151
171
180
152
177
185
176
161
167
168
190
191
161
152
177
168
182
162
181
165
188
145
181
183
182
161
150
175
176
147
171
148
170
173
175
169
180
165
186
174
183
164
169
185
163
145
175
158
181
182
172
199
163
149
174
173
183
185
174
139
145
183
166
177
185
191
170
160
151
172
173
163
184
146
162
178
172
168
183
188
203
175
158
183
186
166
140
173
164
168
160
170
179
186
192
153
170
166
164
176
175
159
166
180
172
180
178
164
179
183
153
178
181
166
179
157
195
170
173
176
155
176
186
167
165
147
180
154
152
156
163
166
170
171
192
172
150
174
169
177
186
179
183
161
175
171
190
178
172
168
188
165
166
161
179
165
177
143
173
156
189
173
147
154
183
166
157
146
167
168
161
169
178
169
187
154
169
186
192
185
152
175
166
171
159
171
154
183
173
157
153
191
167
160
180
189
166
173
166
165
158
165
171
177
159
169
176
198
166
163
170
170
171
170
175
170
151
170
161
174
177
169
162
182
193
175
163
197
148
167
162
159
172
148
172
152
155
181
174
163
178
166
157
167
174
174
154
171
198
159
176
168
164
150
164
156
172
172
144
175
163
171
169
173
169
173
151
184
156
177
185
155
174
188
150
172
177
180
180
175
172
172
156
152
182
172
150
171
152
171
156
167
173
165
173
156
174
177
187
184
181
173
156
172
183
157
186
172
158
178
184
184
179
187
177
170
154
177
167
171
189
177
182
197
177
184
171
177
165
158
146
176
160
154
163
183
147
176
172
175
177
188
177
168
182
163
176
183
150
168
176
163
176
179
170
167
181
169
170
188
169
171
154
166
161
165
166
185
196
158
155
186
188
163
168
176
157
171
160
188
149
196
202
167
185
191
178
157
152
182
161
177
182
162
150
176
162
179
174
166
151
163
155
182
162
166
189
161
191
167
181
167
153
166
211
179
170
218
172
162
157
160
167
163
175
162
180
189
184
175
177
156
181
165
158
164
165
199
169
191
169
155
173
181
173
183
165
179
159
171
184
174
171
163
161
186
152
184
142
170
176
176
162
162
192
165
147
152
163
144
180
187
184
168
168
195
149
187
166
181
194
171
162
163
187
185
173
170
184
194
188
176
158
176
169
146
178
160
172
150
169
188
184
157
173
172
173
166
166
172
155
188
153
183
166
175
161
154
173
174
151
171
168
172
165
183
168
206
179
168
184
166
167
166
168
177
175
147
159
158
183
164
177
174
178
187
162
157
170
187
179
174
147
160
182
171
173
174
184
182
144
179
167
178
153
154
180
159
169
176
142
170
154
188
184
164
153
166
174
202
161
183
175
155
167
162
166
174
184
154
158
178
173
188
191
167
163
163
146
188
154
166
183
186
175
159
159
147
147
186
173
174
148
188
174
181
157
188
142
167
176
169
197
193
185
169
169
166
171
176
161
152
177
182
170
175
183
166
176
172
174
188
159
173
157
165
166
156
170
177
163
165
162
147
181
161
143
166
172
164
154
149
171
178
155
177
192
140
149
170
189
174
163
169
182
153
165
177
165
147
188
169
194
178
184
174
182
165
163
154
171
181
178
171
184
171
164
156
161
164
178
173
155
171
175
171
149
166
164
187
191
161
171
154
165
186
199
156
178
150
180
168
158
167
152
177
195
196
166
184
180
156
155
163
159
164
163
146
164
179
176
145
175
179
149
176
192
198
174
153
166
168
157
158
184
166
171
178
139
162
169
158
173
181
170
167
162
195
163
150
174
166
169
158
181
185
173
166
160
171
181
172
187
158
159
154
184
173
138
168
185
203
183
182
179
183
172
175
153
177
182
168
153
171
177
173
196
160
170
165
165
176
166
174
171
165
164
157
184
164
170
154
167
195
158
184
164
181
169
146
176
170
166
175
175
148
165
165
161
175
170
163
180
146
168
179
196
171
180
163
162
194
144
158
184
157
170
191
187
181
157
203
167
140
191
175
167
170
178
188
139
161
171
171
189
164
172
175
165
178
165
197
169
165
210
168
175
147
175
184
167
174
182
182
172
190
174
181
167
172
167
197
150
160
180
185
168
173
194
153
167
181
176
161
183
153
183
177
142
163
185
168
183
159
155
153
156
185
160
181
177
162
163
165
156
184
180
174
174
187
175
180
171
167
182
196
180
183
193
169
180
165
174
171
185
163
171
175
165
154
165
168
158
158
180
170
185
161
162
178
153
165
175
170
179
211
194
180
199
174
168
179
145
187
179
180
170
162
160
166
163
145
171
143
179
161
175
166
162
158
177
174
200
181
179
159
173
186
157
153
170
172
161
157
170
159
164
193
177
173
174
178
174
172
189
158
151
188
177
175
162
168
156
195
174
179
150
164
179
171
158
144
190
161
194
161
170
170
160
172
195
170
171
176
199
162
168
165
166
164
192
167
163
157
178
161
120
160
182
166
156
183
169
178
173
182
145
167
162
183
189
180
174
163
181
170
159
151
170
200
169
177
163
188
151
185
165
185
167
200
178
174
147
165
169
170
178
160
167
147
179
172
188
178
171
170
177
180
177
186
162
179
168
170
187
178
181
194
184
162
186
164
160
156
173
191
196
180
179
183
166
155
163
167
166
180
165
196
183
169
159
166
200
164
175
176
153
180
157
183
183
168
204
172
167
186
168
161
141
165
181
161
179
174
187
155
165
156
139
153
149
162
187
181
168
179
189
178
164
174
157
161
145
159
171
161
180
175
176
146
154
156
124
178
178
179
193
157
176
175
173
192
186
165
173
150
178
137
159
152
157
157
182
156
173
145
188
184
162
175
178
166
190
182
180
195
166
191
197
152
162
182
153
164
170
137
139
176
196
187
192
147
171
151
174
169
168
189
165
161
155
173
186
197
157
176
158
182
173
168
159
148
185
185
157
176
170
175
165
172
163
169
164
155
185
179
183
180
163
179
188
159
170
159
161
177
172
191
198
177
179
157
167
186
181
161
161
183
155
192
159
188
157
164
157
152
144
187
198
173
149
164
156
164
171
183
163
151
185
187
161
177
185
171
188
183
168
167
172
163
170
159
158
154
154
160
158
162
169
170
170
169
160
170
160
154
155
157
160
174
188
171
167
153
182
191
165
173
161
160
172
180
161
170
174
171
176
157
162
188
199
176
184
188
196
171
171
179
172
156
187
164
152
165
158
180
201
165
185
190
165
166
160
148
169
170
182
162
175
183
168
168
154
160
164
173
183
164
162
159
154
168
157
170
157
176
184
185
143
186
181
183
149
158
171
188
157
170
155
171
164
198
178
146
159
168
182
165
155
165
154
183
171
178
171
163
158
146
161
160
202
175
180
179
202
163
144
173
164
168
181
186
190
173
162
182
172
154
184
164
165
153
163
178
171
174
164
173
169
163
158
164
171
185
171
157
159
174
156
189
164
166
166
174
179
150
160
161
170
157
177
178
181
170
145
154
170
152
197
152
143
165
171
184
178
174
153
172
191
156
172
181
168
171
166
155
179
189
174
149
180
159
174
165
158
161
165
177
179
169
143
183
167
173
188
169
166
179
153
171
180
175
176
170
156
167
175
183
169
158
179
201
172
167
175
165
203
181
176
166
169
198
165
164
166
180
164
159
162
173
192
168
173
178
186
170
177
142
146
193
176
167
178
173
176
201
169
166
168
174
164
180
160
177
160
179
183
170
206
158
185
167
164
194
159
171
179
166
159
141
165
193
157
185
156
169
172
162
149
154
167
138
169
167
176
149
147
145
162
156
163
166
198
144
195
180
170
171
179
180
187
171
168
180
163
174
177
183
159
170
177
179
161
152
161
163
157
154
179
148
154
178
188
178
162
167
177
170
166
176
159
147
153
151
162
176
159
158
175
166
172
179
182
179
159
172
167
173
161
142
156
162
154
182
173
198
181
174
179
162
149
181
165
178
178
153
180
166
182
172
178
175
173
191
204
164
187
172
164
176
174
165
159
166
174
164
158
176
179
181
173
146
171
188
168
181
167
204
169
168
178
165
180
177
181
159
175
150
199
150
190
161
167
174
173
180
185
164
178
162
174
181
165
174
147
157
166
179
170
172
157
191
161
193
178
171
160
158
179
199
173
173
167
149
152
176
166
162
178
160
172
174
194
173
206
189
160
174
182
160
177
175
177
166
165
183
171
162
182
157
172
164
183
191
178
175
168
146
167
188
168
164
180
161
173
189
143
168
176
160
175
162
171
165
156
161
176
152
175
166
141
167
185
166
176
156
152
166
159
162
176
161
162
162
176
178
159
174
179
175
162
181
178
175
170
148
149
187
171
174
177
175
183
153
198
156
163
142
182
185
162
194
177
169
169
188
162
168
159
189
169
185
164
180
189
177
157
157
203
155
163
175
166
160
157
157
175
174
176
168
181
174
167
169
174
164
153
181
158
152
166
153
160
175
169
151
178
173
180
162
155
182
175
157
181
166
173
182
172
174
159
163
162
184
155
211
125
154
170
157
175
190
156
157
188
187
177
146
194
199
178
153
162
185
156
166
176
158
185
166
180
178
167
188
157
185
189
177
178
170
180
160
154
165
163
189
187
169
198
182
174
154
175
197
183
153
180
176
158
181
177
188
183
180
176
165
181
162
182
148
178
190
157
146
172
176
181
140
191
193
161
182
177
166
182
189
155
177
176
183
179
173
157
173
189
157
170
174
159
190
158
172
179
162
171
158
181
169
149
171
176
156
176
175
170
168
194
184
147
139
181
193
155
175
162
172
186
155
170
170
172
169
173
163
162
161
163
181
163
186
181
172
169
151
160
182
160
165
173
182
168
167
148
161
175
170
171
160
183
168
187
177
161
178
170
159
171
164
155
163
149
167
165
168
173
162
154
164
156
174
163
155
182
167
183
182
171
191
143
171
176
163
164
167
175
190
167
174
168
163
176
157
155
157
163
178
185
159
157
162
161
152
199
164
186
158
166
159
182
149
167
166
148
157
168
183
168
179
193
161
157
179
192
161
181
179
191
158
190
186
168
180
192
160
174
175
154
182
150
172
177
191
161
213
185
167
166
169
172
161
153
169
186
162
180
188
177
172
179
185
175
164
161
174
163
165
168
183
162
180
169
166
145
193
182
161
177
141
153
156
169
158
162
186
144
185
166
171
160
172
166
159
157
180
165
166
166
172
181
184
165
174
174
164
187
159
174
184
186
181
166
158
185
179
169
168
169
176
180
156
166
154
169
158
182
195
174
171
179
191
173
160
157
188
177
168
180
175
170
169
195
161
183
186
179
153
184
185
168
175
157
189
159
166
178
186
179
133
169
169
159
164
180
159
179
150
165
169
188
170
176
168
158
160
169
162
177
166
164
174
171
183
158
174
183
219
173
164
177
174
166
169
198
174
180
158
180
168
171
168
187
195
151
181
192
181
165
176
183
168
182
181
177
158
168
161
178
163
145
181
169
174
164
179
180
176
170
162
159
180
172
167
144
133
156
173
159
173
177
161
198
149
176
176
140
174
173
183
161
187
137
176
157
182
151
175
176
149
147
157
162
157
159
177
181
188
160
157
178
174
174
153
174
177
180
182
162
172
191
179
190
158
167
176
180
149
166
185
178
163
180
171
172
160
157
168
160
184
172
159
172
184
155
164
163
152
169
164
167
150
187
156
171
156
194
184
159
143
172
181
171
168
183
162
170
163
149
168
176
166
160
170
176
152
155
166
169
167
175
160
151
154
175
172
180
172
168
161
160
160
175
163
152
149
163
182
159
161
165
148
160
172
185
151
171
179
170
186
172
182
157
172
189
155
157
169
180
134
192
171
148
191
180
179
170
161
161
174
156
155
179
167
178
179
184
168
180
186
185
184
183
154
167
178
182
152
163
206
189
173
199
169
173
148
170
159
154
166
166
193
160
191
176
168
180
192
166
180
174
188
166
161
155
180
186
170
166
154
168
165
161
172
190
177
178
173
168
171
152
154
157
179
161
138
157
154
170
169
164
168
179
167
161
164
193
159
164
181
136
187
170
179
182
170
172
171
175
149
176
168
179
156
172
183
149
170
162
177
152
172
196
167
173
144
195
167
181
186
174
188
199
174
162
171
171
173
170
154
179
154
192
175
175
167
170
185
198
177
168
159
166
165
166
171
180
178
169
152
154
167
176
180
177
167
160
186
166
162
155
172
178
182
155
162
148
175
176
177
147
183
163
168
182
157
154
182
148
186
177
163
194
195
176
161
159
172
161
170
170
171
176
150
173
197
172
178
173
167
167
168
177
177
188
175
179
189
164
170
171
139
161
179
168
173
172
171
174
156
167
166
145
181
191
150
197
178
159
156
178
165
144
151
187
166
185
174
148
183
186
163
180
175
154
156
170
181
160
171
177
194
155
145
157
176
152
148
185
151
151
163
172
176
166
174
158
199
185
168
158
154
172
171
185
162
177
183
146
174
172
174
182
165
162
146
174
178
166
175
183
177
174
164
177
150
196
197
168
156
183
155
162
169
150
168
153
156
181
187
176
181
151
166
157
159
165
173
187
179
162
171
172
175
168
147
193
159
153
141
175
167
172
159
169
167
161
176
182
186
169
188
188
184
178
190
170
168
167
149
166
165
158
155
176
169
155
166
177
148
162
179
194
161
149
165
165
183
153
171
188
153
156
172
180
162
171
180
170
173
177
192
173
165
162
172
185
161
168
174
181
173
178
169
180
170
146
193
184
166
182
157
173
181
152
188
175
157
171
169
186
159
177
174
145
196
173
147
168
168
194
158
165
174
144
175
162
186
190
172
160
192
160
144
170
163
141
161
180
192
144
160
186
184
194
168
163
162
166
159
146
157
171
174
152
168
178
164
166
167
159
176
168
158
186
181
172
192
150
161
215
171
151
165
157
186
179
150
192
192
186
164
186
180
168
170
177
164
173
163
170
168
177
179
168
179
161
175
164
163
171
183
165
167
155
175
181
159
160
150
167
174
141
154
177
163
169
153
141
159
179
178
168
184
170
171
180
150
203
196
185
157
152
172
194
196
168
176
174
186
169
177
187
162
173
174
138
199
172
169
167
178
166
175
160
173
178
160
192
162
171
180
182
176
174
183
159
174
180
160
162
179
162
177
171
182
146
158
183
164
169
166
179
178
160
162
159
191
175
162
155
183
176
172
178
141
178
178
171
191
173
158
160
174
167
191
168
160
162
178
156
176
184
152
170
159
163
173
166
187
208
143
185
153
193
169
173
139
182
183
173
176
177
165
171
175
197
161
165
154
188
147
172
172
158
166
159
147
196
141
172
166
153
189
180
175
178
175
180
178
184
162
155
188
185
173
162
169
171
182
163
183
164
162
163
183
178
166
187
139
176
147
161
178
171
171
142
163
173
170
181
164
154
183
185
153
181
172
171
168
192
192
179
161
174
170
176
162
144
171
175
173
176
177
184
172
186
160
179
162
177
179
135
186
184
154
193
175
169
170
171
147
168
169
200
156
167
153
175
164
179
180
168
183
169
165
170
179
170
200
175
185
147
165
172
180
180
178
172
184
184
192
157
166
170
201
177
165
167
158
181
176
183
184
165
168
184
168
153
163
174
174
177
186
176
167
176
155
168
160
179
162
165
170
183
158
202
162
174
141
177
159
145
156
175
172
166
153
179
175
186
173
171
164
177
171
180
170
195
154
163
162
140
182
153
182
175
189
173
175
183
159
161
160
176
166
176
177
167
167
168
165
171
168
196
173
166
128
170
175
156
170
169
185
156
152
179
160
178
179
157
206
198
177
173
172
162
150
195
176
172
176
141
136
173
177
201
177
166
181
171
164
172
167
175
170
166
174
167
153
174
162
166
156
153
167
182
167
178
185
173
172
169
186
187
160
151
158
139
164
181
162
157
169
179
183
193
180
155
202
174
164
191
202
147
162
194
165
163
195
168
166
148
168
180
158
169
191
170
181
171
157
169
153
174
184
142
166
163
190
172
163
171
154
148
171
160
170
153
161
164
182
159
191
162
157
171
156
183
162
173
150
154
143
183
195
166
182
188
174
154
184
161
157
184
172
173
170
187
162
166
172
184
165
186
178
160
183
194
155
172
153
165
161
180
150
183
172
162
175
170
170
157
168
147
166
165
156
160
178
185
162
196
165
164
154
177
152
182
178
183
171
180
179
171
158
167
141
166
147
168
169
178
171
165
165
176
171
180
179
157
161
172
142
176
168
165
188
163
165
174
168
177
198
169
191
163
160
155
169
192
185
162
168
173
161
162
168
168
179
191
189
177
158
165
164
166
163
172
176
177
181
171
158
200
190
170
178
186
197
166
175
170
169
184
154
158
186
152
176
181
167
142
183
166
158
173
189
161
169
145
189
173
187
176
160
171
166
170
178
164
173
142
180
162
146
174
188
174
170
176
164
174
168
162
172
173
177
162
158
156
163
164
171
166
167
186
162
175
162
163
176
173
170
168
194
171
164
168
170
155
163
158
187
165
181
130
161
163
153
186
187
175
193
178
159
201
160
169
160
164
145
167
165
172
152
170
163
140
160
164
173
159
177
162
181
166
182
170
157
175
165
190
166
171
168
180
173
150
186
180
168
193
157
188
162
198
162
170
167
137
182
175
191
158
177
163
165
178
172
150
191
163
161
185
191
195
172
198
166
151
141
195
164
164
174
178
157
147
189
159
174
173
157
170
182
167
161
195
176
169
164
161
166
178
182
141
195
165
181
176
185
197
156
177
182
170
186
170
206
179
189
173
157
173
187
154
171
150
164
169
179
190
176
179
161
180
191
177
176
174
181
186
171
165
169
181
185
179
164
188
167
184
150
167
176
171
178
154
133
176
192
190
173
147
177
173
200
166
188
181
143
156
160
172
174
180
165
160
194
168
164
150
157
190
152
170
179
152
165
161
171
167
158
167
148
175
166
145
163
171
164
178
155
169
167
160
174
160
170
167
155
184
169
193
173
168
161
148
178
187
166
199
192
195
170
193
183
177
178
177
146
142
173
170
159
165
181
158
173
171
149
172
127
166
177
182
164
163
183
163
167
169
183
174
155
176
172
165
166
156
168
172
179
162
160
168
156
161
173
179
167
174
155
172
165
152
163
175
159
177
159
172
168
184
160
178
170
176
157
179
171
177
139
179
175
182
165
179
167
198
188
168
192
179
145
179
173
175
169
159
154
175
183
148
162
172
185
179
173
160
145
172
182
159
184
169
172
201
183
164
180
169
188
141
158
152
197
181
182
185
167
161
158
151
172
180
168
163
171
195
152
162
194
155
156
171
165
165
196
157
168
186
165
175
173
167
169
164
160
189
172
198
170
158
161
173
192
157
193
163
170
173
166
137
186
181
178
183
179
165
166
169
181
190
198
171
166
170
166
180
169
177
165
182
145
190
173
187
171
207
195
172
176
170
187
169
170
189
174
172
162
169
172
188
174
166
159
175
180
156
185
163
165
173
174
164
175
174
151
163
167
153
163
171
158
160
166
180
188
162
171
191
184
153
147
145
176
147
184
168
153
176
158
158
156
143
188
178
158
166
183
141
161
162
187
171
158
171
157
161
165
163
183
195
153
188
168
158
168
141
157
152
163
165
184
184
157
185
172
151
159
179
156
177
164
187
170
177
174
163
182
163
176
170
192
162
197
187
172
155
176
160
175
185
177
171
150
198
175
167
174
197
172
185
157
172
172
183
160
151
183
165
150
163
181
193
177
179
171
174
164
156
185
179
170
181
162
163
175
173
162
165
163
180
152
179
175
193
181
172
162
175
154
159
182
177
159
178
163
160
176
157
191
157
179
135
187
194
169
154
178
176
161
188
158
182
205
182
162
182
157
173
162
185
147
194
161
188
176
162
170
156
148
158
171
159
167
183
160
165
188
171
198
153
167
171
180
172
180
163
180
160
198
173
186
185
182
187
148
198
166
169
199
159
161
182
176
182
165
167
171
164
182
164
195
188
171
168
176
184
170
171
171
173
177
166
143
165
169
185
170
184
182
158
169
163
162
156
161
172
164
154
220
197
167
174
178
171
149
167
182
170
166
160
186
171
190
173
186
148
178
153
206
168
169
171
155
168
169
158
188
172
165
150
183
169
156
181
194
171
182
165
185
171
177
182
166
172
158
170
153
198
175
139
185
179
170
192
182
166
161
148
171
177
150
157
158
186
166
152
187
188
173
154
165
156
176
155
175
163
183
175
174
190
163
168
148
174
134
197
177
169
184
179
162
169
189
156
165
148
181
186
141
164
168
170
175
152
154
163
149
166
172
180
181
172
175
180
167
162
178
158
178
148
167
176
168
179
193
190
151
187
176
161
183
170
177
190
173
170
156
170
164
164
190
178
163
164
154
168
158
168
170
174
153
172
165
160
155
150
176
173
170
165
186
165
185
154
177
157
171
179
178
166
181
185
151
174
170
183
178
182
182
160
162
166
174
199
173
183
156
156
170
155
150
185
172
173
177
187
176
184
168
177
152
162
144
192
175
157
156
184
162
159
148
175
181
172
157
174
174
189
190
172
164
173
186
156
171
179
153
171
153
177
164
142
178
167
172
154
162
191
162
169
202
145
169
180
171
160
166
168
158
160
181
169
166
153
190
169
184
153
159
178
176
149
188
156
205
183
139
169
170
156
159
153
163
156
167
187
155
176
166
165
179
161
175
168
191
169
140
147
156
167
176
192
175
165
179
150
191
160
177
184
169
166
179
175
157
184
162
138
167
147
153
173
178
183
175
168
182
182
164
168
181
182
182
176
183
175
171
176
163
168
177
159
200
184
167
180
169
170
168
167
177
158
190
179
183
154
186
155
162
159
158
170
168
166
166
157
163
152
184
166
147
179
182
183
172
189
191
152
158
164
172
187
158
168
183
160
152
168
181
141
168
150
178
183
167
160
176
152
168
183
197
162
180
161
175
174
190
182
181
187
178
186
178
167
173
186
168
169
158
170
144
182
198
173
180
170
161
169
158
170
169
166
163
144
183
153
156
151
165
194
180
164
179
176
142
153
152
170
182
146
161
135
174
172
151
181
167
171
180
176
172
184
163
162
161
157
164
169
196
162
163
160
159
169
163
179
165
182
175
156
178
158
179
153
168
204
193
169
158
177
163
166
178
167
174
180
152
171
174
160
176
168
191
170
183
165
167
171
181
162
187
188
182
153
173
187
156
136
159
183
175
142
154
172
151
180
146
177
180
174
165
188
176
165
170
160
180
169
183
154
174
171
160
161
163
191
178
168
174
163
168
170
167
164
188
137
157
167
192
168
156
160
156
176
179
176
167
165
163
154
168
162
164
152
154
168
168
201
157
177
177
178
163
167
186
169
162
170
186
188
183
155
156
162
146
165
162
169
166
204
157
163
181
167
171
173
153
175
124
153
160
182
172
156
171
167
163
185
173
183
161
153
159
162
183
147
172
130
168
188
193
157
182
156
184
175
188
138
176
170
161
195
151
150
172
163
181
195
165
167
186
173
150
171
152
171
162
172
183
173
181
189
160
172
155
159
178
178
159
159
158
165
158
178
162
169
167
157
166
189
161
199
150
179
178
170
173
187
176
182
174
177
154
173
149
186
164
184
160
171
172
173
166
172
164
176
173
166
167
179
152
192
173
182
186
160
183
189
168
185
196
165
173
171
154
171
162
162
173
193
161
197
163
150
163
142
174
178
180
170
168
186
176
155
168
181
176
160
168
178
183
167
170
182
164
153
187
180
171
190
172
188
137
173
196
146
184
196
170
185
162
190
207
168
178
171
175
156
182
185
151
161
160
176
188
170
160
178
181
176
197
161
159
168
177
172
166
180
166
172
181
166
164
164
174
164
172
146
155
163
176
182
181
157
193
174
167
188
194
176
158
173
166
183
175
158
186
155
190
179
180
159
160
169
177
193
174
167
182
188
189
163
178
161
149
167
166
172
187
165
168
149
142
156
197
165
182
186
173
163
175
146
153
164
175
163
197
171
159
155
166
160
174
137
161
161
159
173
186
171
172
163
189
172
186
181
189
157
173
181
184
161
162
157
177
167
164
187
189
169
144
165
151
179
176
167
159
157
158
153
183
154
160
145
165
151
174
160
147
192
165
178
177
166
194
186
159
161
162
156
166
158
166
170
180
174
186
156
161
172
147
167
185
154
161
174
179
175
149
181
162
153
176
164
180
160
188
167
151
160
159
189
180
183
179
152
176
169
167
188
168
162
153
163
154
180
177
175
160
180
185
188
163
156
165
164
162
192
163
169
162
159
161
199
172
156
153
156
150
174
176
183
157
160
174
183
174
148
194
184
206
194
151
203
197
174
153
172
169
158
165
172
157
158
152
165
173
178
178
162
182
174
148
167
166
172
179
136
176
170
159
151
182
165
159
191
174
162
179
187
192
181
161
182
197
152
156
164
148
183
173
174
167
156
181
186
176
180
166
171
151
188
179
179
180
193
183
147
165
137
171
162
165
170
157
173
161
147
169
172
178
184
184
159
161
182
162
162
180
157
147
181
191
161
168
186
188
174
180
178
154
166
165
179
178
192
179
173
156
168
168
175
158
199
180
163
169
154
161
188
163
160
160
171
168
163
170
198
146
173
151
176
179
205
160
165
161
158
171
148
155
180
149
180
174
168
148
200
156
167
164
169
176
156
177
177
183
167
166
161
177
172
165
162
172
163
173
173
175
173
222
156
187
150
174
183
164
160
176
181
160
175
194
143
168
191
152
162
202
154
176
154
161
168
179
172
195
193
180
188
194
175
170
170
151
147
163
171
173
164
200
176
174
171
158
167
160
167
172
181
179
174
140
158
183
172
195
159
160
159
157
166
155
180
182
181
153
175
153
162
183
161
139
198
161
147
177
170
163
173
171
181
173
144
175
146
197
171
170
174
170
186
184
180
177
194
170
182
194
183
180
170
159
178
155
176
156
173
173
187
168
166
184
165
182
180
171
154
182
147
166
181
173
155
171
163
190
192
161
178
190
164
171
158
191
181
163
165
185
173
175
168
182
174
157
187
175
180
156
163
180
160
173
199
155
178
178
160
178
158
177
171
171
162
149
150
164
154
185
175
163
164
174
158
169
165
165
161
163
183
161
170
166
169
172
182
172
164
155
156
175
179
174
163
182
168
176
165
181
167
172
182
181
166
157
181
186
172
145
174
173
183
158
169
173
203
174
188
186
165
167
176
159
182
160
196
162
181
188
167
184
150
180
176
166
178
158
184
170
184
188
139
185
170
165
173
156
163
177
161
176
168
153
166
188
169
197
165
163
166
161
205
150
182
189
171
191
160
162
164
187
173
179
182
166
167
186
156
165
144
158
166
155
181
178
180
178
180
170
189
187
149
166
155
158
193
163
149
182
164
181
152
167
163
185
171
153
170
164
168
157
164
177
168
163
174
156
169
144
168
191
169
180
194
175
183
178
182
194
170
174
172
170
153
165
169
171
181
159
148
175
191
169
175
162
172
172
173
179
163
186
180
154
175
192
187
161
182
166
177
185
166
178
178
177
196
186
141
169
168
180
161
179
174
192
177
143
165
168
145
192
175
173
166
175
177
161
165
154
176
175
150
179
174
156
168
165
168
182
175
139
157
165
180
135
159
160
176
167
163
171
161
174
190
177
164
172
178
195
159
159
198
151
157
167
176
202
159
187
165
178
168
147
150
164
184
187
181
173
177
180
166
175
177
180
181
182
154
185
176
147
165
166
139
151
195
154
174
167
169
182
165
147
188
166
160
159
162
161
161
184
173
175
173
179
168
183
185
172
152
149
168
176
176
158
151
176
170
185
175
175
185
179
170
171
162
142
154
163
176
182
191
181
175
147
183
194
182
173
193
169
180
155
172
166
164
176
159
160
177
171
157
173
179
157
169
173
155
188
161
151
166
187
175
157
157
209
202
177
167
186
149
172
179
174
170
179
173
172
161
165
162
162
168
179
155
178
177
156
160
157
187
141
148
153
155
166
153
181
160
180
190
188
163
175
184
179
183
162
173
177
185
147
159
168
171
175
183
186
175
163
177
156
182
142
180
181
168
177
180
166
155
155
173
167
181
154
154
169
159
179
175
164
170
156
157
167
162
178
175
183
187
161
171
162
159
170
153
175
146
185
146
158
167
172
168
168
169
139
164
149
171
161
172
158
163
171
196
168
175
194
157
194
172
167
200
163
166
177
175
161
148
172
171
177
168
178
184
170
174
146
171
151
170
184
178
183
168
165
172
168
171
177
203
158
167
171
198
189
196
212
171
149
172
166
176
194
157
154
169
171
167
176
179
160
177
156
167
199
166
168
193
147
162
166
152
169
144
171
181
166
163
197
178
184
161
168
172
159
177
173
176
191
153
173
170
180
156
163
166
171
185
172
166
169
166
170
162
167
173
184
185
161
165
156
176
169
163
175
161
149
178
172
179
176
170
182
183
160
188
167
182
138
149
186
198
148
178
191
164
162
165
175
171
178
162
157
187
149
166
161
183
172
166
183
155
162
175
188
170
157
163
169
195
172
191
153
176
188
169
157
170
156
168
172
194
141
164
182
203
159
163
193
180
173
157
157
196
177
175
182
167
164
176
183
168
172
155
179
181
178
146
161
160
143
206
177
155
171
157
167
170
162
165
161
161
163
177
156
166
191
169
183
175
185
156
183
157
176
151
172
178
175
176
168
160
174
179
165
178
167
188
166
165
173
158
161
187
164
184
176
171
176
184
170
163
170
194
173
168
163
179
153
165
173
145
167
195
170
149
162
184
180
184
175
179
161
180
168
198
167
148
163
173
181
149
169
161
175
175
172
176
174
165
170
171
176
149
181
168
164
169
180
168
173
182
185
153
181
169
201
158
154
165
188
161
186
159
162
156
177
174
170
176
171
173
180
165
187
161
153
186
161
171
188
163
138
158
144
169
138
162
145
173
137
165
168
177
149
193
154
170
179
153
164
181
160
174
198
157
167
164
166
178
170
163
163
158
169
156
166
176
157
180
180
171
169
152
188
186
181
192
178
195
198
171
165
172
163
188
171
180
171
162
168
167
157
203
174
161
177
156
164
163
165
171
186
177
162
154
164
197
163
175
171
158
149
170
197
174
158
184
178
178
171
160
161
175
177
185
170
188
177
166
167
184
150
157
163
159
177
167
161
180
158
155
191
169
161
167
182
152
169
169
148
180
183
166
165
197
167
181
182
186
169
173
154
173
157
177
176
177
167
173
177
169
151
172
122
171
164
178
170
172
194
151
177
186
169
208
181
154
163
166
170
175
172
150
175
185
156
150
167
165
166
165
164
163
200
172
185
171
169
183
181
162
163
136
197
161
174
147
171
170
184
198
166
174
171
164
190
164
181
155
169
159
157
180
164
186
160
146
166
164
182
172
191
162
177
158
184
153
182
164
179
167
171
186
148
200
175
166
158
144
170
181
157
181
173
182
156
156
143
146
160
157
170
153
179
160
179
166
181
164
170
182
145
194
173
177
200
185
164
148
162
172
194
159
160
165
154
180
171
161
179
154
177
204
175
157
184
158
166
158
160
201
170
174
147
159
162
196
176
170
165
152
185
180
161
158
157
182
200
167
163
179
179
152
176
164
176
160
165
171
175
164
156
175
162
178
167
162
186
174
137
178
172
169
179
156
174
159
181
159
178
162
152
192
189
152
172
178
194
166
146
191
152
170
146
157
170
157
191
161
183
169
172
185
170
168
154
160
157
166
181
188
179
190
165
162
133
172
165
186
169
201
155
151
170
187
171
148
193
155
169
192
153
188
181
188
172
138
177
173
148
162
154
177
181
161
192
156
171
142
179
163
186
196
189
154
169
162
165
163
172
161
190
175
171
128
164
182
166
157
172
182
187
182
177
174
194
171
182
199
144
160
178
164
178
174
179
193
182
188
146
192
143
185
163
144
166
167
175
196
174
174
182
160
173
176
161
145
191
166
176
170
175
193
172
159
151
167
193
166
147
167
169
206
148
188
169
176
174
176
179
187
186
173
166
180
195
178
171
142
156
186
151
171
158
159
173
155
164
179
154
180
144
162
150
164
163
148
156
180
190
160
173
178
188
139
188
190
180
162
158
174
174
173
142
163
154
173
155
159
180
151
165
181
168
170
154
165
181
189
137
160
170
178
161
171
188
185
178
169
182
152
174
172
152
177
187
185
166
156
155
180
158
163
171
193
175
154
179
170
177
174
157
178
163
170
189
184
163
181
167
153
165
170
159
154
191
164
174
157
159
171
168
196
163
160
173
188
168
176
168
172
173
175
170
150
180
194
154
164
177
172
181
186
165
177
170
182
167
183
175
159
158
153
169
150
165
177
170
186
201
182
174
164
156
164
148
173
185
174
181
190
183
181
172
159
175
152
159
186
156
177
188
168
167
170
169
163
154
174
163
153
174
169
161
161
169
188
165
187
179
151
167
154
145
193
176
170
162
160
172
152
169
174
172
155
187
185
181
168
145
188
162
163
175
184
181
168
180
186
171
182
162
176
182
158
193
155
188
156
164
159
170
174
174
179
167
167
161
176
169
163
160
166
158
185
171
197
160
175
165
162
178
172
191
186
155
170
178
164
188
197
163
185
158
170
157
176
142
179
184
156
190
170
161
173
212
148
182
170
151
170
163
179
193
193
188
166
159
153
180
144
173
144
181
173
148
174
200
144
179
163
190
172
172
155
180
186
168
143
160
162
147
180
178
167
167
159
203
180
165
160
162
185
164
160
181
194
178
157
164
170
159
168
151
164
168
178
168
173
169
178
171
189
186
159
198
173
189
181
169
165
147
190
167
162
160
192
166
176
168
153
186
173
162
179
162
192
184
181
179
141
164
158
170
180
183
182
184
169
184
178
194
180
182
145
180
158
167
171
143
157
173
170
163
160
170
157
192
190
164
138
172
159
189
181
172
152
185
151
191
170
164
160
148
174
176
157
156
169
156
154
177
168
174
185
152
157
148
179
181
162
181
192
163
175
149
154
175
185
175
187
172
168
168
174
160
169
173
183
152
158
163
159
165
160
178
183
137
167
180
171
161
167
168
167
160
166
151
159
164
182
196
155
150
172
166
167
165
196
166
165
180
162
189
179
180
153
179
175
171
153
148
148
177
155
170
168
190
161
179
178
180
162
164
175
189
167
174
176
162
174
152
195
173
142
165
156
173
151
166
161
192
178
145
169
170
168
133
157
164
193
177
163
195
155
150
170
160
165
176
169
188
173
182
161
179
168
183
150
174
167
162
193
157
168
178
178
170
162
155
164
167
174
173
178
178
159
148
151
147
158
152
161
175
181
170
179
164
173
176
190
161
178
171
202
155
158
147
169
185
185
174
172
159
163
162
160
173
163
182
171
142
164
181
175
171
174
153
185
177
155
161
150
177
165
180
168
183
151
169
164
154
176
154
165
159
186
187
164
165
173
183
167
185
184
154
181
179
147
183
158
152
147
161
173
152
160
172
157
156
176
184
165
186
155
160
156
184
179
150
177
164
150
164
174
164
171
165
169
194
173
189
196
160
157
198
156
165
166
183
177
130
166
164
167
149
172
168
163
165
180
144
159
171
169
153
147
187
164
205
155
167
178
160
157
181
168
164
161
169
185
136
151
157
146
180
191
184
149
179
174
149
166
165
177
170
156
182
171
167
149
176
156
179
171
179
176
172
169
161
165
160
198
155
184
168
173
196
191
152
183
163
172
165
161
158
164
178
165
179
164
158
173
171
156
178
155
180
146
153
171
163
201
163
180
179
174
178
184
159
177
176
164
164
188
175
181
158
175
161
173
170
168
193
182
143
175
164
183
181
135
156
156
151
206
177
161
196
166
174
188
189
159
166
179
168
165
143
184
200
165
154
159
174
136
149
205
161
175
177
153
158
147
189
159
156
179
172
165
179
175
177
169
165
163
178
165
177
167
142
164
170
179
160
149
167
166
161
165
163
155
158
167
171
143
164
166
172
187
163
189
174
162
153
161
161
188
175
167
176
159
189
155
162
199
184
171
169
187
164
158
186
163
178
163
175
187
168
151
180
170
171
177
170
172
174
190
180
195
170
167
163
166
161
166
148
158
161
166
148
168
135
158
170
164
200
143
175
185
151
183
174
190
155
158
180
175
158
188
174
189
195
172
177
175
168
165
199
180
157
171
152
173
152
195
179
169
167
163
166
161
169
170
160
172
186
176
157
156
158
169
162
177
197
178
160
176
167
171
182
162
178
161
162
170
159
192
155
157
170
156
175
165
178
161
170
170
164
157
157
167
190
206
158
163
150
181
167
183
173
175
177
142
188
174
168
140
166
157
160
178
162
152
171
171
171
170
156
167
163
189
164
167
183
155
178
172
205
179
185
162
150
176
159
193
170
162
187
173
166
198
157
167
162
152
166
165
173
172
168
189
140
162
160
159
182
142
191
179
188
163
168
183
158
163
171
160
168
173
160
187
171
158
137
138
174
189
177
160
157
178
153
153
175
186
153
152
195
162
173
196
163
150
173
172
151
160
170
175
171
145
163
142
181
151
175
185
184
158
174
148
161
163
178
195
173
168
164
155
159
155
160
180
170
163
150
157
167
163
135
182
176
185
154
159
176
158
176
158
168
175
159
171
180
174
168
167
154
176
171
181
138
187
178
165
160
195
175
172
146
167
166
150
187
178
178
182
183
147
173
176
187
174
172
182
175
155
161
184
167
160
166
175
163
193
176
154
159
172
175
177
177
162
175
169
165
168
169
156
167
180
170
173
190
177
160
194
163
176
184
188
166
192
163
166
164
176
186
180
171
168
168
191
164
177
140
160
159
177
182
177
189
165
168
137
162
175
169
162
174
183
191
160
157
156
170
175
159
164
164
175
158
162
162
168
169
193
180
153
164
153
175
159
185
173
186
171
157
180
157
160
173
165
176
157
158
182
171
155
158
155
151
190
145
166
173
161
178
150
186
163
158
173
170
176
184
175
161
169
163
182
188
201
148
168
167
142
157
156
183
156
173
156
159
167
183
160
166
170
182
175
169
161
162
192
171
166
167
182
180
156
168
174
176
178
168
175
161
144
178
157
172
180
177
140
164
188
127
177
149
187
159
170
167
134
173
163
185
169
151
187
173
166
186
163
159
183
136
128
149
167
173
174
178
175
151
191
163
168
130
180
165
159
176
163
185
172
160
163
180
175
178
176
153
172
156
168
176
177
166
164
174
179
155
182
158
165
165
165
144
161
163
191
159
168
169
183
185
187
181
173
162
168
160
169
181
177
181
179
161
168
173
186
154
163
161
193
176
188
154
174
160
175
187
179
173
179
161
174
158
180
167
187
158
179
188
172
183
186
164
159
170
173
186
158
163
173
188
156
172
175
183
164
176
165
151
170
183
171
197
179
162
141
170
192
160
169
163
179
180
177
162
171
169
163
193
181
176
177
179
169
175
177
167
164
157
169
174
159
186
182
177
160
171
150
153
161
176
181
184
170
194
170
182
154
170
145
179
179
174
181
175
186
190
174
173
184
189
148
169
168
158
167
171
160
181
166
148
165
201
163
176
168
174
181
151
178
166
160
165
185
177
182
171
191
153
159
172
173
171
163
178
162
185
174
173
199
175
214
151
162
150
151
157
183
168
189
178
170
156
187
198
193
188
164
164
165
171
179
170
166
164
172
178
163
188
162
182
157
174
156
155
173
165
183
169
178
196
175
168
168
166
142
177
169
170
172
151
194
176
169
190
150
183
168
180
158
166
152
184
171
169
180
170
164
164
190
156
176
158
171
154
159
190
190
149
168
194
150
153
186
162
170
147
155
174
172
159
183
165
162
150
178
142
154
157
151
180
173
172
165
170
171
191
160
174
191
166
169
187
156
170
157
169
154
193
166
171
145
160
190
177
175
166
164
147
147
190
153
203
155
185
180
198
172
167
155
166
167
181
199
156
155
186
176
147
163
163
169
167
168
189
164
174
143
167
169
150
181
159
157
164
165
168
181
185
181
184
169
162
168
167
170
166
156
190
183
177
173
193
178
166
161
169
181
164
155
176
161
168
175
160
175
165
195
179
157
169
167
165
174
176
165
161
170
176
164
160
156
153
159
155
173
166
185
183
159
166
178
176
187
171
168
169
176
179
178
185
176
158
178
164
159
182
167
179
170
145
160
160
176
184
164
165
152
185
174
175
163
182
183
170
164
161
161
186
148
172
163
178
166
169
174
186
173
161
179
176
194
188
168
159
160
193
164
185
178
166
154
190
175
181
184
162
148
165
195
178
168
146
160
160
182
158
182
169
173
165
158
174
188
157
159
177
173
182
149
172
182
175
173
155
195
153
159
169
158
165
176
162
177
173
177
173
158
167
171
166
178
163
161
161
162
182
178
159
184
169
170
176
188
181
168
172
183
163
162
167
171
167
181
183
179
151
179
176
162
176
176
164
184
160
169
173
169
150
147
164
165
170
169
171
191
185
185
186
166
176
199
155
176
160
193
159
148
149
179
155
149
162
178
152
174
166
159
168
184
187
161
161
157
185
154
199
175
186
153
174
150
171
161
161
188
181
166
182
162
165
142
168
153
135
141
143
166
173
163
179
147
180
151
169
171
164
185
157
156
163
157
169
151
185
149
173
177
188
156
171
193
167
166
179
163
168
149
159
188
166
159
148
182
176
173
161
157
176
156
146
152
146
159
187
173
180
186
169
201
161
187
156
186
151
166
170
164
161
185
170
181
180
156
178
176
158
167
151
152
164
175
174
178
189
174
164
157
211
186
164
163
163
190
178
183
181
164
169
170
159
183
139
174
164
176
188
179
156
170
164
175
181
160
168
150
144
171
163
179
123
186
181
161
185
159
167
161
165
176
196
152
170
179
191
191
169
169
187
170
156
160
183
155
159
176
162
182
184
176
166
169
168
174
160
176
178
183
159
157
144
175
167
156
164
173
184
199
177
135
190
150
152
171
172
143
147
190
166
170
180
170
157
183
172
145
150
151
176
154
187
164
175
180
146
167
172
161
168
172
170
153
156
158
170
174
179
134
174
181
170
180
161
166
175
156
144
173
182
186
159
160
164
173
165
171
163
183
172
170
181
169
166
175
181
193
179
152
185
187
177
173
149
164
189
140
169
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment