Fixed typo
[advent-of-code-15.git] / advent24.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "collapsed": false
8 },
9 "outputs": [],
10 "source": [
11 "import itertools\n",
12 "import functools\n",
13 "import operator\n",
14 "\n",
15 "def prod(iterable):\n",
16 " return functools.reduce(operator.mul, iterable, 1)"
17 ]
18 },
19 {
20 "cell_type": "code",
21 "execution_count": 2,
22 "metadata": {
23 "collapsed": false
24 },
25 "outputs": [
26 {
27 "data": {
28 "text/plain": [
29 "[1,\n",
30 " 2,\n",
31 " 3,\n",
32 " 5,\n",
33 " 7,\n",
34 " 13,\n",
35 " 17,\n",
36 " 19,\n",
37 " 23,\n",
38 " 29,\n",
39 " 31,\n",
40 " 37,\n",
41 " 41,\n",
42 " 43,\n",
43 " 53,\n",
44 " 59,\n",
45 " 61,\n",
46 " 67,\n",
47 " 71,\n",
48 " 73,\n",
49 " 79,\n",
50 " 83,\n",
51 " 89,\n",
52 " 97,\n",
53 " 101,\n",
54 " 103,\n",
55 " 107,\n",
56 " 109,\n",
57 " 113]"
58 ]
59 },
60 "execution_count": 2,
61 "metadata": {},
62 "output_type": "execute_result"
63 }
64 ],
65 "source": [
66 "presents = [int(p) for p in open('advent24.txt').readlines()]\n",
67 "presents"
68 ]
69 },
70 {
71 "cell_type": "code",
72 "execution_count": 21,
73 "metadata": {
74 "collapsed": true
75 },
76 "outputs": [],
77 "source": [
78 "# presents = [1,2,3,4,5,7,8,9,10,11]"
79 ]
80 },
81 {
82 "cell_type": "code",
83 "execution_count": 19,
84 "metadata": {
85 "collapsed": false
86 },
87 "outputs": [
88 {
89 "data": {
90 "text/plain": [
91 "512"
92 ]
93 },
94 "execution_count": 19,
95 "metadata": {},
96 "output_type": "execute_result"
97 }
98 ],
99 "source": [
100 "group_weight = sum(presents) // 3\n",
101 "group_weight"
102 ]
103 },
104 {
105 "cell_type": "code",
106 "execution_count": 38,
107 "metadata": {
108 "collapsed": false
109 },
110 "outputs": [],
111 "source": [
112 "#def valid(g1, g2, g3):\n",
113 "# return len(g1) < len(g2) and len(g1) < len(g3) and \\\n",
114 "# not (g1 & g2) and not (g1 & g3) and not (g2 & g3)"
115 ]
116 },
117 {
118 "cell_type": "code",
119 "execution_count": 18,
120 "metadata": {
121 "collapsed": false
122 },
123 "outputs": [
124 {
125 "data": {
126 "text/plain": [
127 "[([9, 11], [1, 2, 3, 4, 10], [5, 7, 8]),\n",
128 " ([9, 11], [1, 2, 3, 4, 10], [5, 8, 7]),\n",
129 " ([9, 11], [1, 2, 3, 4, 10], [7, 5, 8]),\n",
130 " ([9, 11], [1, 2, 3, 4, 10], [7, 8, 5]),\n",
131 " ([9, 11], [1, 2, 3, 4, 10], [8, 5, 7]),\n",
132 " ([9, 11], [1, 2, 3, 4, 10], [8, 7, 5]),\n",
133 " ([9, 11], [1, 2, 3, 10, 4], [5, 7, 8]),\n",
134 " ([9, 11], [1, 2, 3, 10, 4], [5, 8, 7]),\n",
135 " ([9, 11], [1, 2, 3, 10, 4], [7, 5, 8]),\n",
136 " ([9, 11], [1, 2, 3, 10, 4], [7, 8, 5]),\n",
137 " ([9, 11], [1, 2, 3, 10, 4], [8, 5, 7]),\n",
138 " ([9, 11], [1, 2, 3, 10, 4], [8, 7, 5]),\n",
139 " ([9, 11], [1, 2, 4, 3, 10], [5, 7, 8]),\n",
140 " ([9, 11], [1, 2, 4, 3, 10], [5, 8, 7]),\n",
141 " ([9, 11], [1, 2, 4, 3, 10], [7, 5, 8]),\n",
142 " ([9, 11], [1, 2, 4, 3, 10], [7, 8, 5]),\n",
143 " ([9, 11], [1, 2, 4, 3, 10], [8, 5, 7]),\n",
144 " ([9, 11], [1, 2, 4, 3, 10], [8, 7, 5]),\n",
145 " ([9, 11], [1, 2, 4, 5, 8], [3, 7, 10]),\n",
146 " ([9, 11], [1, 2, 4, 5, 8], [3, 10, 7]),\n",
147 " ([9, 11], [1, 2, 4, 5, 8], [7, 3, 10]),\n",
148 " ([9, 11], [1, 2, 4, 5, 8], [7, 10, 3]),\n",
149 " ([9, 11], [1, 2, 4, 5, 8], [10, 3, 7]),\n",
150 " ([9, 11], [1, 2, 4, 5, 8], [10, 7, 3]),\n",
151 " ([9, 11], [1, 2, 4, 8, 5], [3, 7, 10]),\n",
152 " ([9, 11], [1, 2, 4, 8, 5], [3, 10, 7]),\n",
153 " ([9, 11], [1, 2, 4, 8, 5], [7, 3, 10]),\n",
154 " ([9, 11], [1, 2, 4, 8, 5], [7, 10, 3]),\n",
155 " ([9, 11], [1, 2, 4, 8, 5], [10, 3, 7]),\n",
156 " ([9, 11], [1, 2, 4, 8, 5], [10, 7, 3]),\n",
157 " ([9, 11], [1, 2, 4, 10, 3], [5, 7, 8]),\n",
158 " ([9, 11], [1, 2, 4, 10, 3], [5, 8, 7]),\n",
159 " ([9, 11], [1, 2, 4, 10, 3], [7, 5, 8]),\n",
160 " ([9, 11], [1, 2, 4, 10, 3], [7, 8, 5]),\n",
161 " ([9, 11], [1, 2, 4, 10, 3], [8, 5, 7]),\n",
162 " ([9, 11], [1, 2, 4, 10, 3], [8, 7, 5]),\n",
163 " ([9, 11], [1, 2, 5, 4, 8], [3, 7, 10]),\n",
164 " ([9, 11], [1, 2, 5, 4, 8], [3, 10, 7]),\n",
165 " ([9, 11], [1, 2, 5, 4, 8], [7, 3, 10]),\n",
166 " ([9, 11], [1, 2, 5, 4, 8], [7, 10, 3]),\n",
167 " ([9, 11], [1, 2, 5, 4, 8], [10, 3, 7]),\n",
168 " ([9, 11], [1, 2, 5, 4, 8], [10, 7, 3]),\n",
169 " ([9, 11], [1, 2, 5, 8, 4], [3, 7, 10]),\n",
170 " ([9, 11], [1, 2, 5, 8, 4], [3, 10, 7]),\n",
171 " ([9, 11], [1, 2, 5, 8, 4], [7, 3, 10]),\n",
172 " ([9, 11], [1, 2, 5, 8, 4], [7, 10, 3]),\n",
173 " ([9, 11], [1, 2, 5, 8, 4], [10, 3, 7]),\n",
174 " ([9, 11], [1, 2, 5, 8, 4], [10, 7, 3]),\n",
175 " ([9, 11], [1, 2, 7, 10], [3, 4, 5, 8]),\n",
176 " ([9, 11], [1, 2, 7, 10], [3, 4, 8, 5]),\n",
177 " ([9, 11], [1, 2, 7, 10], [3, 5, 4, 8]),\n",
178 " ([9, 11], [1, 2, 7, 10], [3, 5, 8, 4]),\n",
179 " ([9, 11], [1, 2, 7, 10], [3, 8, 4, 5]),\n",
180 " ([9, 11], [1, 2, 7, 10], [3, 8, 5, 4]),\n",
181 " ([9, 11], [1, 2, 7, 10], [4, 3, 5, 8]),\n",
182 " ([9, 11], [1, 2, 7, 10], [4, 3, 8, 5]),\n",
183 " ([9, 11], [1, 2, 7, 10], [4, 5, 3, 8]),\n",
184 " ([9, 11], [1, 2, 7, 10], [4, 5, 8, 3]),\n",
185 " ([9, 11], [1, 2, 7, 10], [4, 8, 3, 5]),\n",
186 " ([9, 11], [1, 2, 7, 10], [4, 8, 5, 3]),\n",
187 " ([9, 11], [1, 2, 7, 10], [5, 3, 4, 8]),\n",
188 " ([9, 11], [1, 2, 7, 10], [5, 3, 8, 4]),\n",
189 " ([9, 11], [1, 2, 7, 10], [5, 4, 3, 8]),\n",
190 " ([9, 11], [1, 2, 7, 10], [5, 4, 8, 3]),\n",
191 " ([9, 11], [1, 2, 7, 10], [5, 8, 3, 4]),\n",
192 " ([9, 11], [1, 2, 7, 10], [5, 8, 4, 3]),\n",
193 " ([9, 11], [1, 2, 7, 10], [8, 3, 4, 5]),\n",
194 " ([9, 11], [1, 2, 7, 10], [8, 3, 5, 4]),\n",
195 " ([9, 11], [1, 2, 7, 10], [8, 4, 3, 5]),\n",
196 " ([9, 11], [1, 2, 7, 10], [8, 4, 5, 3]),\n",
197 " ([9, 11], [1, 2, 7, 10], [8, 5, 3, 4]),\n",
198 " ([9, 11], [1, 2, 7, 10], [8, 5, 4, 3]),\n",
199 " ([9, 11], [1, 2, 8, 4, 5], [3, 7, 10]),\n",
200 " ([9, 11], [1, 2, 8, 4, 5], [3, 10, 7]),\n",
201 " ([9, 11], [1, 2, 8, 4, 5], [7, 3, 10]),\n",
202 " ([9, 11], [1, 2, 8, 4, 5], [7, 10, 3]),\n",
203 " ([9, 11], [1, 2, 8, 4, 5], [10, 3, 7]),\n",
204 " ([9, 11], [1, 2, 8, 4, 5], [10, 7, 3]),\n",
205 " ([9, 11], [1, 2, 8, 5, 4], [3, 7, 10]),\n",
206 " ([9, 11], [1, 2, 8, 5, 4], [3, 10, 7]),\n",
207 " ([9, 11], [1, 2, 8, 5, 4], [7, 3, 10]),\n",
208 " ([9, 11], [1, 2, 8, 5, 4], [7, 10, 3]),\n",
209 " ([9, 11], [1, 2, 8, 5, 4], [10, 3, 7]),\n",
210 " ([9, 11], [1, 2, 8, 5, 4], [10, 7, 3]),\n",
211 " ([9, 11], [1, 2, 10, 3, 4], [5, 7, 8]),\n",
212 " ([9, 11], [1, 2, 10, 3, 4], [5, 8, 7]),\n",
213 " ([9, 11], [1, 2, 10, 3, 4], [7, 5, 8]),\n",
214 " ([9, 11], [1, 2, 10, 3, 4], [7, 8, 5]),\n",
215 " ([9, 11], [1, 2, 10, 3, 4], [8, 5, 7]),\n",
216 " ([9, 11], [1, 2, 10, 3, 4], [8, 7, 5]),\n",
217 " ([9, 11], [1, 2, 10, 4, 3], [5, 7, 8]),\n",
218 " ([9, 11], [1, 2, 10, 4, 3], [5, 8, 7]),\n",
219 " ([9, 11], [1, 2, 10, 4, 3], [7, 5, 8]),\n",
220 " ([9, 11], [1, 2, 10, 4, 3], [7, 8, 5]),\n",
221 " ([9, 11], [1, 2, 10, 4, 3], [8, 5, 7]),\n",
222 " ([9, 11], [1, 2, 10, 4, 3], [8, 7, 5]),\n",
223 " ([9, 11], [1, 2, 10, 7], [3, 4, 5, 8]),\n",
224 " ([9, 11], [1, 2, 10, 7], [3, 4, 8, 5]),\n",
225 " ([9, 11], [1, 2, 10, 7], [3, 5, 4, 8]),\n",
226 " ([9, 11], [1, 2, 10, 7], [3, 5, 8, 4]),\n",
227 " ([9, 11], [1, 2, 10, 7], [3, 8, 4, 5]),\n",
228 " ([9, 11], [1, 2, 10, 7], [3, 8, 5, 4]),\n",
229 " ([9, 11], [1, 2, 10, 7], [4, 3, 5, 8]),\n",
230 " ([9, 11], [1, 2, 10, 7], [4, 3, 8, 5]),\n",
231 " ([9, 11], [1, 2, 10, 7], [4, 5, 3, 8]),\n",
232 " ([9, 11], [1, 2, 10, 7], [4, 5, 8, 3]),\n",
233 " ([9, 11], [1, 2, 10, 7], [4, 8, 3, 5]),\n",
234 " ([9, 11], [1, 2, 10, 7], [4, 8, 5, 3]),\n",
235 " ([9, 11], [1, 2, 10, 7], [5, 3, 4, 8]),\n",
236 " ([9, 11], [1, 2, 10, 7], [5, 3, 8, 4]),\n",
237 " ([9, 11], [1, 2, 10, 7], [5, 4, 3, 8]),\n",
238 " ([9, 11], [1, 2, 10, 7], [5, 4, 8, 3]),\n",
239 " ([9, 11], [1, 2, 10, 7], [5, 8, 3, 4]),\n",
240 " ([9, 11], [1, 2, 10, 7], [5, 8, 4, 3]),\n",
241 " ([9, 11], [1, 2, 10, 7], [8, 3, 4, 5]),\n",
242 " ([9, 11], [1, 2, 10, 7], [8, 3, 5, 4]),\n",
243 " ([9, 11], [1, 2, 10, 7], [8, 4, 3, 5]),\n",
244 " ([9, 11], [1, 2, 10, 7], [8, 4, 5, 3]),\n",
245 " ([9, 11], [1, 2, 10, 7], [8, 5, 3, 4]),\n",
246 " ([9, 11], [1, 2, 10, 7], [8, 5, 4, 3]),\n",
247 " ([9, 11], [1, 3, 2, 4, 10], [5, 7, 8]),\n",
248 " ([9, 11], [1, 3, 2, 4, 10], [5, 8, 7]),\n",
249 " ([9, 11], [1, 3, 2, 4, 10], [7, 5, 8]),\n",
250 " ([9, 11], [1, 3, 2, 4, 10], [7, 8, 5]),\n",
251 " ([9, 11], [1, 3, 2, 4, 10], [8, 5, 7]),\n",
252 " ([9, 11], [1, 3, 2, 4, 10], [8, 7, 5]),\n",
253 " ([9, 11], [1, 3, 2, 10, 4], [5, 7, 8]),\n",
254 " ([9, 11], [1, 3, 2, 10, 4], [5, 8, 7]),\n",
255 " ([9, 11], [1, 3, 2, 10, 4], [7, 5, 8]),\n",
256 " ([9, 11], [1, 3, 2, 10, 4], [7, 8, 5]),\n",
257 " ([9, 11], [1, 3, 2, 10, 4], [8, 5, 7]),\n",
258 " ([9, 11], [1, 3, 2, 10, 4], [8, 7, 5]),\n",
259 " ([9, 11], [1, 3, 4, 2, 10], [5, 7, 8]),\n",
260 " ([9, 11], [1, 3, 4, 2, 10], [5, 8, 7]),\n",
261 " ([9, 11], [1, 3, 4, 2, 10], [7, 5, 8]),\n",
262 " ([9, 11], [1, 3, 4, 2, 10], [7, 8, 5]),\n",
263 " ([9, 11], [1, 3, 4, 2, 10], [8, 5, 7]),\n",
264 " ([9, 11], [1, 3, 4, 2, 10], [8, 7, 5]),\n",
265 " ([9, 11], [1, 3, 4, 5, 7], [2, 8, 10]),\n",
266 " ([9, 11], [1, 3, 4, 5, 7], [2, 10, 8]),\n",
267 " ([9, 11], [1, 3, 4, 5, 7], [8, 2, 10]),\n",
268 " ([9, 11], [1, 3, 4, 5, 7], [8, 10, 2]),\n",
269 " ([9, 11], [1, 3, 4, 5, 7], [10, 2, 8]),\n",
270 " ([9, 11], [1, 3, 4, 5, 7], [10, 8, 2]),\n",
271 " ([9, 11], [1, 3, 4, 7, 5], [2, 8, 10]),\n",
272 " ([9, 11], [1, 3, 4, 7, 5], [2, 10, 8]),\n",
273 " ([9, 11], [1, 3, 4, 7, 5], [8, 2, 10]),\n",
274 " ([9, 11], [1, 3, 4, 7, 5], [8, 10, 2]),\n",
275 " ([9, 11], [1, 3, 4, 7, 5], [10, 2, 8]),\n",
276 " ([9, 11], [1, 3, 4, 7, 5], [10, 8, 2]),\n",
277 " ([9, 11], [1, 3, 4, 10, 2], [5, 7, 8]),\n",
278 " ([9, 11], [1, 3, 4, 10, 2], [5, 8, 7]),\n",
279 " ([9, 11], [1, 3, 4, 10, 2], [7, 5, 8]),\n",
280 " ([9, 11], [1, 3, 4, 10, 2], [7, 8, 5]),\n",
281 " ([9, 11], [1, 3, 4, 10, 2], [8, 5, 7]),\n",
282 " ([9, 11], [1, 3, 4, 10, 2], [8, 7, 5]),\n",
283 " ([9, 11], [1, 3, 5, 4, 7], [2, 8, 10]),\n",
284 " ([9, 11], [1, 3, 5, 4, 7], [2, 10, 8]),\n",
285 " ([9, 11], [1, 3, 5, 4, 7], [8, 2, 10]),\n",
286 " ([9, 11], [1, 3, 5, 4, 7], [8, 10, 2]),\n",
287 " ([9, 11], [1, 3, 5, 4, 7], [10, 2, 8]),\n",
288 " ([9, 11], [1, 3, 5, 4, 7], [10, 8, 2]),\n",
289 " ([9, 11], [1, 3, 5, 7, 4], [2, 8, 10]),\n",
290 " ([9, 11], [1, 3, 5, 7, 4], [2, 10, 8]),\n",
291 " ([9, 11], [1, 3, 5, 7, 4], [8, 2, 10]),\n",
292 " ([9, 11], [1, 3, 5, 7, 4], [8, 10, 2]),\n",
293 " ([9, 11], [1, 3, 5, 7, 4], [10, 2, 8]),\n",
294 " ([9, 11], [1, 3, 5, 7, 4], [10, 8, 2]),\n",
295 " ([9, 11], [1, 3, 7, 4, 5], [2, 8, 10]),\n",
296 " ([9, 11], [1, 3, 7, 4, 5], [2, 10, 8]),\n",
297 " ([9, 11], [1, 3, 7, 4, 5], [8, 2, 10]),\n",
298 " ([9, 11], [1, 3, 7, 4, 5], [8, 10, 2]),\n",
299 " ([9, 11], [1, 3, 7, 4, 5], [10, 2, 8]),\n",
300 " ([9, 11], [1, 3, 7, 4, 5], [10, 8, 2]),\n",
301 " ([9, 11], [1, 3, 7, 5, 4], [2, 8, 10]),\n",
302 " ([9, 11], [1, 3, 7, 5, 4], [2, 10, 8]),\n",
303 " ([9, 11], [1, 3, 7, 5, 4], [8, 2, 10]),\n",
304 " ([9, 11], [1, 3, 7, 5, 4], [8, 10, 2]),\n",
305 " ([9, 11], [1, 3, 7, 5, 4], [10, 2, 8]),\n",
306 " ([9, 11], [1, 3, 7, 5, 4], [10, 8, 2]),\n",
307 " ([9, 11], [1, 3, 10, 2, 4], [5, 7, 8]),\n",
308 " ([9, 11], [1, 3, 10, 2, 4], [5, 8, 7]),\n",
309 " ([9, 11], [1, 3, 10, 2, 4], [7, 5, 8]),\n",
310 " ([9, 11], [1, 3, 10, 2, 4], [7, 8, 5]),\n",
311 " ([9, 11], [1, 3, 10, 2, 4], [8, 5, 7]),\n",
312 " ([9, 11], [1, 3, 10, 2, 4], [8, 7, 5]),\n",
313 " ([9, 11], [1, 3, 10, 4, 2], [5, 7, 8]),\n",
314 " ([9, 11], [1, 3, 10, 4, 2], [5, 8, 7]),\n",
315 " ([9, 11], [1, 3, 10, 4, 2], [7, 5, 8]),\n",
316 " ([9, 11], [1, 3, 10, 4, 2], [7, 8, 5]),\n",
317 " ([9, 11], [1, 3, 10, 4, 2], [8, 5, 7]),\n",
318 " ([9, 11], [1, 3, 10, 4, 2], [8, 7, 5]),\n",
319 " ([9, 11], [1, 4, 2, 3, 10], [5, 7, 8]),\n",
320 " ([9, 11], [1, 4, 2, 3, 10], [5, 8, 7]),\n",
321 " ([9, 11], [1, 4, 2, 3, 10], [7, 5, 8]),\n",
322 " ([9, 11], [1, 4, 2, 3, 10], [7, 8, 5]),\n",
323 " ([9, 11], [1, 4, 2, 3, 10], [8, 5, 7]),\n",
324 " ([9, 11], [1, 4, 2, 3, 10], [8, 7, 5]),\n",
325 " ([9, 11], [1, 4, 2, 5, 8], [3, 7, 10]),\n",
326 " ([9, 11], [1, 4, 2, 5, 8], [3, 10, 7]),\n",
327 " ([9, 11], [1, 4, 2, 5, 8], [7, 3, 10]),\n",
328 " ([9, 11], [1, 4, 2, 5, 8], [7, 10, 3]),\n",
329 " ([9, 11], [1, 4, 2, 5, 8], [10, 3, 7]),\n",
330 " ([9, 11], [1, 4, 2, 5, 8], [10, 7, 3]),\n",
331 " ([9, 11], [1, 4, 2, 8, 5], [3, 7, 10]),\n",
332 " ([9, 11], [1, 4, 2, 8, 5], [3, 10, 7]),\n",
333 " ([9, 11], [1, 4, 2, 8, 5], [7, 3, 10]),\n",
334 " ([9, 11], [1, 4, 2, 8, 5], [7, 10, 3]),\n",
335 " ([9, 11], [1, 4, 2, 8, 5], [10, 3, 7]),\n",
336 " ([9, 11], [1, 4, 2, 8, 5], [10, 7, 3]),\n",
337 " ([9, 11], [1, 4, 2, 10, 3], [5, 7, 8]),\n",
338 " ([9, 11], [1, 4, 2, 10, 3], [5, 8, 7]),\n",
339 " ([9, 11], [1, 4, 2, 10, 3], [7, 5, 8]),\n",
340 " ([9, 11], [1, 4, 2, 10, 3], [7, 8, 5]),\n",
341 " ([9, 11], [1, 4, 2, 10, 3], [8, 5, 7]),\n",
342 " ([9, 11], [1, 4, 2, 10, 3], [8, 7, 5]),\n",
343 " ([9, 11], [1, 4, 3, 2, 10], [5, 7, 8]),\n",
344 " ([9, 11], [1, 4, 3, 2, 10], [5, 8, 7]),\n",
345 " ([9, 11], [1, 4, 3, 2, 10], [7, 5, 8]),\n",
346 " ([9, 11], [1, 4, 3, 2, 10], [7, 8, 5]),\n",
347 " ([9, 11], [1, 4, 3, 2, 10], [8, 5, 7]),\n",
348 " ([9, 11], [1, 4, 3, 2, 10], [8, 7, 5]),\n",
349 " ([9, 11], [1, 4, 3, 5, 7], [2, 8, 10]),\n",
350 " ([9, 11], [1, 4, 3, 5, 7], [2, 10, 8]),\n",
351 " ([9, 11], [1, 4, 3, 5, 7], [8, 2, 10]),\n",
352 " ([9, 11], [1, 4, 3, 5, 7], [8, 10, 2]),\n",
353 " ([9, 11], [1, 4, 3, 5, 7], [10, 2, 8]),\n",
354 " ([9, 11], [1, 4, 3, 5, 7], [10, 8, 2]),\n",
355 " ([9, 11], [1, 4, 3, 7, 5], [2, 8, 10]),\n",
356 " ([9, 11], [1, 4, 3, 7, 5], [2, 10, 8]),\n",
357 " ([9, 11], [1, 4, 3, 7, 5], [8, 2, 10]),\n",
358 " ([9, 11], [1, 4, 3, 7, 5], [8, 10, 2]),\n",
359 " ([9, 11], [1, 4, 3, 7, 5], [10, 2, 8]),\n",
360 " ([9, 11], [1, 4, 3, 7, 5], [10, 8, 2]),\n",
361 " ([9, 11], [1, 4, 3, 10, 2], [5, 7, 8]),\n",
362 " ([9, 11], [1, 4, 3, 10, 2], [5, 8, 7]),\n",
363 " ([9, 11], [1, 4, 3, 10, 2], [7, 5, 8]),\n",
364 " ([9, 11], [1, 4, 3, 10, 2], [7, 8, 5]),\n",
365 " ([9, 11], [1, 4, 3, 10, 2], [8, 5, 7]),\n",
366 " ([9, 11], [1, 4, 3, 10, 2], [8, 7, 5]),\n",
367 " ([9, 11], [1, 4, 5, 2, 8], [3, 7, 10]),\n",
368 " ([9, 11], [1, 4, 5, 2, 8], [3, 10, 7]),\n",
369 " ([9, 11], [1, 4, 5, 2, 8], [7, 3, 10]),\n",
370 " ([9, 11], [1, 4, 5, 2, 8], [7, 10, 3]),\n",
371 " ([9, 11], [1, 4, 5, 2, 8], [10, 3, 7]),\n",
372 " ([9, 11], [1, 4, 5, 2, 8], [10, 7, 3]),\n",
373 " ([9, 11], [1, 4, 5, 3, 7], [2, 8, 10]),\n",
374 " ([9, 11], [1, 4, 5, 3, 7], [2, 10, 8]),\n",
375 " ([9, 11], [1, 4, 5, 3, 7], [8, 2, 10]),\n",
376 " ([9, 11], [1, 4, 5, 3, 7], [8, 10, 2]),\n",
377 " ([9, 11], [1, 4, 5, 3, 7], [10, 2, 8]),\n",
378 " ([9, 11], [1, 4, 5, 3, 7], [10, 8, 2]),\n",
379 " ([9, 11], [1, 4, 5, 7, 3], [2, 8, 10]),\n",
380 " ([9, 11], [1, 4, 5, 7, 3], [2, 10, 8]),\n",
381 " ([9, 11], [1, 4, 5, 7, 3], [8, 2, 10]),\n",
382 " ([9, 11], [1, 4, 5, 7, 3], [8, 10, 2]),\n",
383 " ([9, 11], [1, 4, 5, 7, 3], [10, 2, 8]),\n",
384 " ([9, 11], [1, 4, 5, 7, 3], [10, 8, 2]),\n",
385 " ([9, 11], [1, 4, 5, 8, 2], [3, 7, 10]),\n",
386 " ([9, 11], [1, 4, 5, 8, 2], [3, 10, 7]),\n",
387 " ([9, 11], [1, 4, 5, 8, 2], [7, 3, 10]),\n",
388 " ([9, 11], [1, 4, 5, 8, 2], [7, 10, 3]),\n",
389 " ([9, 11], [1, 4, 5, 8, 2], [10, 3, 7]),\n",
390 " ([9, 11], [1, 4, 5, 8, 2], [10, 7, 3]),\n",
391 " ([9, 11], [1, 4, 5, 10], [2, 3, 7, 8]),\n",
392 " ([9, 11], [1, 4, 5, 10], [2, 3, 8, 7]),\n",
393 " ([9, 11], [1, 4, 5, 10], [2, 7, 3, 8]),\n",
394 " ([9, 11], [1, 4, 5, 10], [2, 7, 8, 3]),\n",
395 " ([9, 11], [1, 4, 5, 10], [2, 8, 3, 7]),\n",
396 " ([9, 11], [1, 4, 5, 10], [2, 8, 7, 3]),\n",
397 " ([9, 11], [1, 4, 5, 10], [3, 2, 7, 8]),\n",
398 " ([9, 11], [1, 4, 5, 10], [3, 2, 8, 7]),\n",
399 " ([9, 11], [1, 4, 5, 10], [3, 7, 2, 8]),\n",
400 " ([9, 11], [1, 4, 5, 10], [3, 7, 8, 2]),\n",
401 " ([9, 11], [1, 4, 5, 10], [3, 8, 2, 7]),\n",
402 " ([9, 11], [1, 4, 5, 10], [3, 8, 7, 2]),\n",
403 " ([9, 11], [1, 4, 5, 10], [7, 2, 3, 8]),\n",
404 " ([9, 11], [1, 4, 5, 10], [7, 2, 8, 3]),\n",
405 " ([9, 11], [1, 4, 5, 10], [7, 3, 2, 8]),\n",
406 " ([9, 11], [1, 4, 5, 10], [7, 3, 8, 2]),\n",
407 " ([9, 11], [1, 4, 5, 10], [7, 8, 2, 3]),\n",
408 " ([9, 11], [1, 4, 5, 10], [7, 8, 3, 2]),\n",
409 " ([9, 11], [1, 4, 5, 10], [8, 2, 3, 7]),\n",
410 " ([9, 11], [1, 4, 5, 10], [8, 2, 7, 3]),\n",
411 " ([9, 11], [1, 4, 5, 10], [8, 3, 2, 7]),\n",
412 " ([9, 11], [1, 4, 5, 10], [8, 3, 7, 2]),\n",
413 " ([9, 11], [1, 4, 5, 10], [8, 7, 2, 3]),\n",
414 " ([9, 11], [1, 4, 5, 10], [8, 7, 3, 2]),\n",
415 " ([9, 11], [1, 4, 7, 3, 5], [2, 8, 10]),\n",
416 " ([9, 11], [1, 4, 7, 3, 5], [2, 10, 8]),\n",
417 " ([9, 11], [1, 4, 7, 3, 5], [8, 2, 10]),\n",
418 " ([9, 11], [1, 4, 7, 3, 5], [8, 10, 2]),\n",
419 " ([9, 11], [1, 4, 7, 3, 5], [10, 2, 8]),\n",
420 " ([9, 11], [1, 4, 7, 3, 5], [10, 8, 2]),\n",
421 " ([9, 11], [1, 4, 7, 5, 3], [2, 8, 10]),\n",
422 " ([9, 11], [1, 4, 7, 5, 3], [2, 10, 8]),\n",
423 " ([9, 11], [1, 4, 7, 5, 3], [8, 2, 10]),\n",
424 " ([9, 11], [1, 4, 7, 5, 3], [8, 10, 2]),\n",
425 " ([9, 11], [1, 4, 7, 5, 3], [10, 2, 8]),\n",
426 " ([9, 11], [1, 4, 7, 5, 3], [10, 8, 2]),\n",
427 " ([9, 11], [1, 4, 7, 8], [2, 3, 5, 10]),\n",
428 " ([9, 11], [1, 4, 7, 8], [2, 3, 10, 5]),\n",
429 " ([9, 11], [1, 4, 7, 8], [2, 5, 3, 10]),\n",
430 " ([9, 11], [1, 4, 7, 8], [2, 5, 10, 3]),\n",
431 " ([9, 11], [1, 4, 7, 8], [2, 10, 3, 5]),\n",
432 " ([9, 11], [1, 4, 7, 8], [2, 10, 5, 3]),\n",
433 " ([9, 11], [1, 4, 7, 8], [3, 2, 5, 10]),\n",
434 " ([9, 11], [1, 4, 7, 8], [3, 2, 10, 5]),\n",
435 " ([9, 11], [1, 4, 7, 8], [3, 5, 2, 10]),\n",
436 " ([9, 11], [1, 4, 7, 8], [3, 5, 10, 2]),\n",
437 " ([9, 11], [1, 4, 7, 8], [3, 10, 2, 5]),\n",
438 " ([9, 11], [1, 4, 7, 8], [3, 10, 5, 2]),\n",
439 " ([9, 11], [1, 4, 7, 8], [5, 2, 3, 10]),\n",
440 " ([9, 11], [1, 4, 7, 8], [5, 2, 10, 3]),\n",
441 " ([9, 11], [1, 4, 7, 8], [5, 3, 2, 10]),\n",
442 " ([9, 11], [1, 4, 7, 8], [5, 3, 10, 2]),\n",
443 " ([9, 11], [1, 4, 7, 8], [5, 10, 2, 3]),\n",
444 " ([9, 11], [1, 4, 7, 8], [5, 10, 3, 2]),\n",
445 " ([9, 11], [1, 4, 7, 8], [10, 2, 3, 5]),\n",
446 " ([9, 11], [1, 4, 7, 8], [10, 2, 5, 3]),\n",
447 " ([9, 11], [1, 4, 7, 8], [10, 3, 2, 5]),\n",
448 " ([9, 11], [1, 4, 7, 8], [10, 3, 5, 2]),\n",
449 " ([9, 11], [1, 4, 7, 8], [10, 5, 2, 3]),\n",
450 " ([9, 11], [1, 4, 7, 8], [10, 5, 3, 2]),\n",
451 " ([9, 11], [1, 4, 8, 2, 5], [3, 7, 10]),\n",
452 " ([9, 11], [1, 4, 8, 2, 5], [3, 10, 7]),\n",
453 " ([9, 11], [1, 4, 8, 2, 5], [7, 3, 10]),\n",
454 " ([9, 11], [1, 4, 8, 2, 5], [7, 10, 3]),\n",
455 " ([9, 11], [1, 4, 8, 2, 5], [10, 3, 7]),\n",
456 " ([9, 11], [1, 4, 8, 2, 5], [10, 7, 3]),\n",
457 " ([9, 11], [1, 4, 8, 5, 2], [3, 7, 10]),\n",
458 " ([9, 11], [1, 4, 8, 5, 2], [3, 10, 7]),\n",
459 " ([9, 11], [1, 4, 8, 5, 2], [7, 3, 10]),\n",
460 " ([9, 11], [1, 4, 8, 5, 2], [7, 10, 3]),\n",
461 " ([9, 11], [1, 4, 8, 5, 2], [10, 3, 7]),\n",
462 " ([9, 11], [1, 4, 8, 5, 2], [10, 7, 3]),\n",
463 " ([9, 11], [1, 4, 8, 7], [2, 3, 5, 10]),\n",
464 " ([9, 11], [1, 4, 8, 7], [2, 3, 10, 5]),\n",
465 " ([9, 11], [1, 4, 8, 7], [2, 5, 3, 10]),\n",
466 " ([9, 11], [1, 4, 8, 7], [2, 5, 10, 3]),\n",
467 " ([9, 11], [1, 4, 8, 7], [2, 10, 3, 5]),\n",
468 " ([9, 11], [1, 4, 8, 7], [2, 10, 5, 3]),\n",
469 " ([9, 11], [1, 4, 8, 7], [3, 2, 5, 10]),\n",
470 " ([9, 11], [1, 4, 8, 7], [3, 2, 10, 5]),\n",
471 " ([9, 11], [1, 4, 8, 7], [3, 5, 2, 10]),\n",
472 " ([9, 11], [1, 4, 8, 7], [3, 5, 10, 2]),\n",
473 " ([9, 11], [1, 4, 8, 7], [3, 10, 2, 5]),\n",
474 " ([9, 11], [1, 4, 8, 7], [3, 10, 5, 2]),\n",
475 " ([9, 11], [1, 4, 8, 7], [5, 2, 3, 10]),\n",
476 " ([9, 11], [1, 4, 8, 7], [5, 2, 10, 3]),\n",
477 " ([9, 11], [1, 4, 8, 7], [5, 3, 2, 10]),\n",
478 " ([9, 11], [1, 4, 8, 7], [5, 3, 10, 2]),\n",
479 " ([9, 11], [1, 4, 8, 7], [5, 10, 2, 3]),\n",
480 " ([9, 11], [1, 4, 8, 7], [5, 10, 3, 2]),\n",
481 " ([9, 11], [1, 4, 8, 7], [10, 2, 3, 5]),\n",
482 " ([9, 11], [1, 4, 8, 7], [10, 2, 5, 3]),\n",
483 " ([9, 11], [1, 4, 8, 7], [10, 3, 2, 5]),\n",
484 " ([9, 11], [1, 4, 8, 7], [10, 3, 5, 2]),\n",
485 " ([9, 11], [1, 4, 8, 7], [10, 5, 2, 3]),\n",
486 " ([9, 11], [1, 4, 8, 7], [10, 5, 3, 2]),\n",
487 " ([9, 11], [1, 4, 10, 2, 3], [5, 7, 8]),\n",
488 " ([9, 11], [1, 4, 10, 2, 3], [5, 8, 7]),\n",
489 " ([9, 11], [1, 4, 10, 2, 3], [7, 5, 8]),\n",
490 " ([9, 11], [1, 4, 10, 2, 3], [7, 8, 5]),\n",
491 " ([9, 11], [1, 4, 10, 2, 3], [8, 5, 7]),\n",
492 " ([9, 11], [1, 4, 10, 2, 3], [8, 7, 5]),\n",
493 " ([9, 11], [1, 4, 10, 3, 2], [5, 7, 8]),\n",
494 " ([9, 11], [1, 4, 10, 3, 2], [5, 8, 7]),\n",
495 " ([9, 11], [1, 4, 10, 3, 2], [7, 5, 8]),\n",
496 " ([9, 11], [1, 4, 10, 3, 2], [7, 8, 5]),\n",
497 " ([9, 11], [1, 4, 10, 3, 2], [8, 5, 7]),\n",
498 " ([9, 11], [1, 4, 10, 3, 2], [8, 7, 5]),\n",
499 " ([9, 11], [1, 4, 10, 5], [2, 3, 7, 8]),\n",
500 " ([9, 11], [1, 4, 10, 5], [2, 3, 8, 7]),\n",
501 " ([9, 11], [1, 4, 10, 5], [2, 7, 3, 8]),\n",
502 " ([9, 11], [1, 4, 10, 5], [2, 7, 8, 3]),\n",
503 " ([9, 11], [1, 4, 10, 5], [2, 8, 3, 7]),\n",
504 " ([9, 11], [1, 4, 10, 5], [2, 8, 7, 3]),\n",
505 " ([9, 11], [1, 4, 10, 5], [3, 2, 7, 8]),\n",
506 " ([9, 11], [1, 4, 10, 5], [3, 2, 8, 7]),\n",
507 " ([9, 11], [1, 4, 10, 5], [3, 7, 2, 8]),\n",
508 " ([9, 11], [1, 4, 10, 5], [3, 7, 8, 2]),\n",
509 " ([9, 11], [1, 4, 10, 5], [3, 8, 2, 7]),\n",
510 " ([9, 11], [1, 4, 10, 5], [3, 8, 7, 2]),\n",
511 " ([9, 11], [1, 4, 10, 5], [7, 2, 3, 8]),\n",
512 " ([9, 11], [1, 4, 10, 5], [7, 2, 8, 3]),\n",
513 " ([9, 11], [1, 4, 10, 5], [7, 3, 2, 8]),\n",
514 " ([9, 11], [1, 4, 10, 5], [7, 3, 8, 2]),\n",
515 " ([9, 11], [1, 4, 10, 5], [7, 8, 2, 3]),\n",
516 " ([9, 11], [1, 4, 10, 5], [7, 8, 3, 2]),\n",
517 " ([9, 11], [1, 4, 10, 5], [8, 2, 3, 7]),\n",
518 " ([9, 11], [1, 4, 10, 5], [8, 2, 7, 3]),\n",
519 " ([9, 11], [1, 4, 10, 5], [8, 3, 2, 7]),\n",
520 " ([9, 11], [1, 4, 10, 5], [8, 3, 7, 2]),\n",
521 " ([9, 11], [1, 4, 10, 5], [8, 7, 2, 3]),\n",
522 " ([9, 11], [1, 4, 10, 5], [8, 7, 3, 2]),\n",
523 " ([9, 11], [1, 5, 2, 4, 8], [3, 7, 10]),\n",
524 " ([9, 11], [1, 5, 2, 4, 8], [3, 10, 7]),\n",
525 " ([9, 11], [1, 5, 2, 4, 8], [7, 3, 10]),\n",
526 " ([9, 11], [1, 5, 2, 4, 8], [7, 10, 3]),\n",
527 " ([9, 11], [1, 5, 2, 4, 8], [10, 3, 7]),\n",
528 " ([9, 11], [1, 5, 2, 4, 8], [10, 7, 3]),\n",
529 " ([9, 11], [1, 5, 2, 8, 4], [3, 7, 10]),\n",
530 " ([9, 11], [1, 5, 2, 8, 4], [3, 10, 7]),\n",
531 " ([9, 11], [1, 5, 2, 8, 4], [7, 3, 10]),\n",
532 " ([9, 11], [1, 5, 2, 8, 4], [7, 10, 3]),\n",
533 " ([9, 11], [1, 5, 2, 8, 4], [10, 3, 7]),\n",
534 " ([9, 11], [1, 5, 2, 8, 4], [10, 7, 3]),\n",
535 " ([9, 11], [1, 5, 3, 4, 7], [2, 8, 10]),\n",
536 " ([9, 11], [1, 5, 3, 4, 7], [2, 10, 8]),\n",
537 " ([9, 11], [1, 5, 3, 4, 7], [8, 2, 10]),\n",
538 " ([9, 11], [1, 5, 3, 4, 7], [8, 10, 2]),\n",
539 " ([9, 11], [1, 5, 3, 4, 7], [10, 2, 8]),\n",
540 " ([9, 11], [1, 5, 3, 4, 7], [10, 8, 2]),\n",
541 " ([9, 11], [1, 5, 3, 7, 4], [2, 8, 10]),\n",
542 " ([9, 11], [1, 5, 3, 7, 4], [2, 10, 8]),\n",
543 " ([9, 11], [1, 5, 3, 7, 4], [8, 2, 10]),\n",
544 " ([9, 11], [1, 5, 3, 7, 4], [8, 10, 2]),\n",
545 " ([9, 11], [1, 5, 3, 7, 4], [10, 2, 8]),\n",
546 " ([9, 11], [1, 5, 3, 7, 4], [10, 8, 2]),\n",
547 " ([9, 11], [1, 5, 4, 2, 8], [3, 7, 10]),\n",
548 " ([9, 11], [1, 5, 4, 2, 8], [3, 10, 7]),\n",
549 " ([9, 11], [1, 5, 4, 2, 8], [7, 3, 10]),\n",
550 " ([9, 11], [1, 5, 4, 2, 8], [7, 10, 3]),\n",
551 " ([9, 11], [1, 5, 4, 2, 8], [10, 3, 7]),\n",
552 " ([9, 11], [1, 5, 4, 2, 8], [10, 7, 3]),\n",
553 " ([9, 11], [1, 5, 4, 3, 7], [2, 8, 10]),\n",
554 " ([9, 11], [1, 5, 4, 3, 7], [2, 10, 8]),\n",
555 " ([9, 11], [1, 5, 4, 3, 7], [8, 2, 10]),\n",
556 " ([9, 11], [1, 5, 4, 3, 7], [8, 10, 2]),\n",
557 " ([9, 11], [1, 5, 4, 3, 7], [10, 2, 8]),\n",
558 " ([9, 11], [1, 5, 4, 3, 7], [10, 8, 2]),\n",
559 " ([9, 11], [1, 5, 4, 7, 3], [2, 8, 10]),\n",
560 " ([9, 11], [1, 5, 4, 7, 3], [2, 10, 8]),\n",
561 " ([9, 11], [1, 5, 4, 7, 3], [8, 2, 10]),\n",
562 " ([9, 11], [1, 5, 4, 7, 3], [8, 10, 2]),\n",
563 " ([9, 11], [1, 5, 4, 7, 3], [10, 2, 8]),\n",
564 " ([9, 11], [1, 5, 4, 7, 3], [10, 8, 2]),\n",
565 " ([9, 11], [1, 5, 4, 8, 2], [3, 7, 10]),\n",
566 " ([9, 11], [1, 5, 4, 8, 2], [3, 10, 7]),\n",
567 " ([9, 11], [1, 5, 4, 8, 2], [7, 3, 10]),\n",
568 " ([9, 11], [1, 5, 4, 8, 2], [7, 10, 3]),\n",
569 " ([9, 11], [1, 5, 4, 8, 2], [10, 3, 7]),\n",
570 " ([9, 11], [1, 5, 4, 8, 2], [10, 7, 3]),\n",
571 " ([9, 11], [1, 5, 4, 10], [2, 3, 7, 8]),\n",
572 " ([9, 11], [1, 5, 4, 10], [2, 3, 8, 7]),\n",
573 " ([9, 11], [1, 5, 4, 10], [2, 7, 3, 8]),\n",
574 " ([9, 11], [1, 5, 4, 10], [2, 7, 8, 3]),\n",
575 " ([9, 11], [1, 5, 4, 10], [2, 8, 3, 7]),\n",
576 " ([9, 11], [1, 5, 4, 10], [2, 8, 7, 3]),\n",
577 " ([9, 11], [1, 5, 4, 10], [3, 2, 7, 8]),\n",
578 " ([9, 11], [1, 5, 4, 10], [3, 2, 8, 7]),\n",
579 " ([9, 11], [1, 5, 4, 10], [3, 7, 2, 8]),\n",
580 " ([9, 11], [1, 5, 4, 10], [3, 7, 8, 2]),\n",
581 " ([9, 11], [1, 5, 4, 10], [3, 8, 2, 7]),\n",
582 " ([9, 11], [1, 5, 4, 10], [3, 8, 7, 2]),\n",
583 " ([9, 11], [1, 5, 4, 10], [7, 2, 3, 8]),\n",
584 " ([9, 11], [1, 5, 4, 10], [7, 2, 8, 3]),\n",
585 " ([9, 11], [1, 5, 4, 10], [7, 3, 2, 8]),\n",
586 " ([9, 11], [1, 5, 4, 10], [7, 3, 8, 2]),\n",
587 " ([9, 11], [1, 5, 4, 10], [7, 8, 2, 3]),\n",
588 " ([9, 11], [1, 5, 4, 10], [7, 8, 3, 2]),\n",
589 " ([9, 11], [1, 5, 4, 10], [8, 2, 3, 7]),\n",
590 " ([9, 11], [1, 5, 4, 10], [8, 2, 7, 3]),\n",
591 " ([9, 11], [1, 5, 4, 10], [8, 3, 2, 7]),\n",
592 " ([9, 11], [1, 5, 4, 10], [8, 3, 7, 2]),\n",
593 " ([9, 11], [1, 5, 4, 10], [8, 7, 2, 3]),\n",
594 " ([9, 11], [1, 5, 4, 10], [8, 7, 3, 2]),\n",
595 " ([9, 11], [1, 5, 7, 3, 4], [2, 8, 10]),\n",
596 " ([9, 11], [1, 5, 7, 3, 4], [2, 10, 8]),\n",
597 " ([9, 11], [1, 5, 7, 3, 4], [8, 2, 10]),\n",
598 " ([9, 11], [1, 5, 7, 3, 4], [8, 10, 2]),\n",
599 " ([9, 11], [1, 5, 7, 3, 4], [10, 2, 8]),\n",
600 " ([9, 11], [1, 5, 7, 3, 4], [10, 8, 2]),\n",
601 " ([9, 11], [1, 5, 7, 4, 3], [2, 8, 10]),\n",
602 " ([9, 11], [1, 5, 7, 4, 3], [2, 10, 8]),\n",
603 " ([9, 11], [1, 5, 7, 4, 3], [8, 2, 10]),\n",
604 " ([9, 11], [1, 5, 7, 4, 3], [8, 10, 2]),\n",
605 " ([9, 11], [1, 5, 7, 4, 3], [10, 2, 8]),\n",
606 " ([9, 11], [1, 5, 7, 4, 3], [10, 8, 2]),\n",
607 " ([9, 11], [1, 5, 8, 2, 4], [3, 7, 10]),\n",
608 " ([9, 11], [1, 5, 8, 2, 4], [3, 10, 7]),\n",
609 " ([9, 11], [1, 5, 8, 2, 4], [7, 3, 10]),\n",
610 " ([9, 11], [1, 5, 8, 2, 4], [7, 10, 3]),\n",
611 " ([9, 11], [1, 5, 8, 2, 4], [10, 3, 7]),\n",
612 " ([9, 11], [1, 5, 8, 2, 4], [10, 7, 3]),\n",
613 " ([9, 11], [1, 5, 8, 4, 2], [3, 7, 10]),\n",
614 " ([9, 11], [1, 5, 8, 4, 2], [3, 10, 7]),\n",
615 " ([9, 11], [1, 5, 8, 4, 2], [7, 3, 10]),\n",
616 " ([9, 11], [1, 5, 8, 4, 2], [7, 10, 3]),\n",
617 " ([9, 11], [1, 5, 8, 4, 2], [10, 3, 7]),\n",
618 " ([9, 11], [1, 5, 8, 4, 2], [10, 7, 3]),\n",
619 " ([9, 11], [1, 5, 10, 4], [2, 3, 7, 8]),\n",
620 " ([9, 11], [1, 5, 10, 4], [2, 3, 8, 7]),\n",
621 " ([9, 11], [1, 5, 10, 4], [2, 7, 3, 8]),\n",
622 " ([9, 11], [1, 5, 10, 4], [2, 7, 8, 3]),\n",
623 " ([9, 11], [1, 5, 10, 4], [2, 8, 3, 7]),\n",
624 " ([9, 11], [1, 5, 10, 4], [2, 8, 7, 3]),\n",
625 " ([9, 11], [1, 5, 10, 4], [3, 2, 7, 8]),\n",
626 " ([9, 11], [1, 5, 10, 4], [3, 2, 8, 7]),\n",
627 " ([9, 11], [1, 5, 10, 4], [3, 7, 2, 8]),\n",
628 " ([9, 11], [1, 5, 10, 4], [3, 7, 8, 2]),\n",
629 " ([9, 11], [1, 5, 10, 4], [3, 8, 2, 7]),\n",
630 " ([9, 11], [1, 5, 10, 4], [3, 8, 7, 2]),\n",
631 " ([9, 11], [1, 5, 10, 4], [7, 2, 3, 8]),\n",
632 " ([9, 11], [1, 5, 10, 4], [7, 2, 8, 3]),\n",
633 " ([9, 11], [1, 5, 10, 4], [7, 3, 2, 8]),\n",
634 " ([9, 11], [1, 5, 10, 4], [7, 3, 8, 2]),\n",
635 " ([9, 11], [1, 5, 10, 4], [7, 8, 2, 3]),\n",
636 " ([9, 11], [1, 5, 10, 4], [7, 8, 3, 2]),\n",
637 " ([9, 11], [1, 5, 10, 4], [8, 2, 3, 7]),\n",
638 " ([9, 11], [1, 5, 10, 4], [8, 2, 7, 3]),\n",
639 " ([9, 11], [1, 5, 10, 4], [8, 3, 2, 7]),\n",
640 " ([9, 11], [1, 5, 10, 4], [8, 3, 7, 2]),\n",
641 " ([9, 11], [1, 5, 10, 4], [8, 7, 2, 3]),\n",
642 " ([9, 11], [1, 5, 10, 4], [8, 7, 3, 2]),\n",
643 " ([9, 11], [1, 7, 2, 10], [3, 4, 5, 8]),\n",
644 " ([9, 11], [1, 7, 2, 10], [3, 4, 8, 5]),\n",
645 " ([9, 11], [1, 7, 2, 10], [3, 5, 4, 8]),\n",
646 " ([9, 11], [1, 7, 2, 10], [3, 5, 8, 4]),\n",
647 " ([9, 11], [1, 7, 2, 10], [3, 8, 4, 5]),\n",
648 " ([9, 11], [1, 7, 2, 10], [3, 8, 5, 4]),\n",
649 " ([9, 11], [1, 7, 2, 10], [4, 3, 5, 8]),\n",
650 " ([9, 11], [1, 7, 2, 10], [4, 3, 8, 5]),\n",
651 " ([9, 11], [1, 7, 2, 10], [4, 5, 3, 8]),\n",
652 " ([9, 11], [1, 7, 2, 10], [4, 5, 8, 3]),\n",
653 " ([9, 11], [1, 7, 2, 10], [4, 8, 3, 5]),\n",
654 " ([9, 11], [1, 7, 2, 10], [4, 8, 5, 3]),\n",
655 " ([9, 11], [1, 7, 2, 10], [5, 3, 4, 8]),\n",
656 " ([9, 11], [1, 7, 2, 10], [5, 3, 8, 4]),\n",
657 " ([9, 11], [1, 7, 2, 10], [5, 4, 3, 8]),\n",
658 " ([9, 11], [1, 7, 2, 10], [5, 4, 8, 3]),\n",
659 " ([9, 11], [1, 7, 2, 10], [5, 8, 3, 4]),\n",
660 " ([9, 11], [1, 7, 2, 10], [5, 8, 4, 3]),\n",
661 " ([9, 11], [1, 7, 2, 10], [8, 3, 4, 5]),\n",
662 " ([9, 11], [1, 7, 2, 10], [8, 3, 5, 4]),\n",
663 " ([9, 11], [1, 7, 2, 10], [8, 4, 3, 5]),\n",
664 " ([9, 11], [1, 7, 2, 10], [8, 4, 5, 3]),\n",
665 " ([9, 11], [1, 7, 2, 10], [8, 5, 3, 4]),\n",
666 " ([9, 11], [1, 7, 2, 10], [8, 5, 4, 3]),\n",
667 " ([9, 11], [1, 7, 3, 4, 5], [2, 8, 10]),\n",
668 " ([9, 11], [1, 7, 3, 4, 5], [2, 10, 8]),\n",
669 " ([9, 11], [1, 7, 3, 4, 5], [8, 2, 10]),\n",
670 " ([9, 11], [1, 7, 3, 4, 5], [8, 10, 2]),\n",
671 " ([9, 11], [1, 7, 3, 4, 5], [10, 2, 8]),\n",
672 " ([9, 11], [1, 7, 3, 4, 5], [10, 8, 2]),\n",
673 " ([9, 11], [1, 7, 3, 5, 4], [2, 8, 10]),\n",
674 " ([9, 11], [1, 7, 3, 5, 4], [2, 10, 8]),\n",
675 " ([9, 11], [1, 7, 3, 5, 4], [8, 2, 10]),\n",
676 " ([9, 11], [1, 7, 3, 5, 4], [8, 10, 2]),\n",
677 " ([9, 11], [1, 7, 3, 5, 4], [10, 2, 8]),\n",
678 " ([9, 11], [1, 7, 3, 5, 4], [10, 8, 2]),\n",
679 " ([9, 11], [1, 7, 4, 3, 5], [2, 8, 10]),\n",
680 " ([9, 11], [1, 7, 4, 3, 5], [2, 10, 8]),\n",
681 " ([9, 11], [1, 7, 4, 3, 5], [8, 2, 10]),\n",
682 " ([9, 11], [1, 7, 4, 3, 5], [8, 10, 2]),\n",
683 " ([9, 11], [1, 7, 4, 3, 5], [10, 2, 8]),\n",
684 " ([9, 11], [1, 7, 4, 3, 5], [10, 8, 2]),\n",
685 " ([9, 11], [1, 7, 4, 5, 3], [2, 8, 10]),\n",
686 " ([9, 11], [1, 7, 4, 5, 3], [2, 10, 8]),\n",
687 " ([9, 11], [1, 7, 4, 5, 3], [8, 2, 10]),\n",
688 " ([9, 11], [1, 7, 4, 5, 3], [8, 10, 2]),\n",
689 " ([9, 11], [1, 7, 4, 5, 3], [10, 2, 8]),\n",
690 " ([9, 11], [1, 7, 4, 5, 3], [10, 8, 2]),\n",
691 " ([9, 11], [1, 7, 4, 8], [2, 3, 5, 10]),\n",
692 " ([9, 11], [1, 7, 4, 8], [2, 3, 10, 5]),\n",
693 " ([9, 11], [1, 7, 4, 8], [2, 5, 3, 10]),\n",
694 " ([9, 11], [1, 7, 4, 8], [2, 5, 10, 3]),\n",
695 " ([9, 11], [1, 7, 4, 8], [2, 10, 3, 5]),\n",
696 " ([9, 11], [1, 7, 4, 8], [2, 10, 5, 3]),\n",
697 " ([9, 11], [1, 7, 4, 8], [3, 2, 5, 10]),\n",
698 " ([9, 11], [1, 7, 4, 8], [3, 2, 10, 5]),\n",
699 " ([9, 11], [1, 7, 4, 8], [3, 5, 2, 10]),\n",
700 " ([9, 11], [1, 7, 4, 8], [3, 5, 10, 2]),\n",
701 " ([9, 11], [1, 7, 4, 8], [3, 10, 2, 5]),\n",
702 " ([9, 11], [1, 7, 4, 8], [3, 10, 5, 2]),\n",
703 " ([9, 11], [1, 7, 4, 8], [5, 2, 3, 10]),\n",
704 " ([9, 11], [1, 7, 4, 8], [5, 2, 10, 3]),\n",
705 " ([9, 11], [1, 7, 4, 8], [5, 3, 2, 10]),\n",
706 " ([9, 11], [1, 7, 4, 8], [5, 3, 10, 2]),\n",
707 " ([9, 11], [1, 7, 4, 8], [5, 10, 2, 3]),\n",
708 " ([9, 11], [1, 7, 4, 8], [5, 10, 3, 2]),\n",
709 " ([9, 11], [1, 7, 4, 8], [10, 2, 3, 5]),\n",
710 " ([9, 11], [1, 7, 4, 8], [10, 2, 5, 3]),\n",
711 " ([9, 11], [1, 7, 4, 8], [10, 3, 2, 5]),\n",
712 " ([9, 11], [1, 7, 4, 8], [10, 3, 5, 2]),\n",
713 " ([9, 11], [1, 7, 4, 8], [10, 5, 2, 3]),\n",
714 " ([9, 11], [1, 7, 4, 8], [10, 5, 3, 2]),\n",
715 " ([9, 11], [1, 7, 5, 3, 4], [2, 8, 10]),\n",
716 " ([9, 11], [1, 7, 5, 3, 4], [2, 10, 8]),\n",
717 " ([9, 11], [1, 7, 5, 3, 4], [8, 2, 10]),\n",
718 " ([9, 11], [1, 7, 5, 3, 4], [8, 10, 2]),\n",
719 " ([9, 11], [1, 7, 5, 3, 4], [10, 2, 8]),\n",
720 " ([9, 11], [1, 7, 5, 3, 4], [10, 8, 2]),\n",
721 " ([9, 11], [1, 7, 5, 4, 3], [2, 8, 10]),\n",
722 " ([9, 11], [1, 7, 5, 4, 3], [2, 10, 8]),\n",
723 " ([9, 11], [1, 7, 5, 4, 3], [8, 2, 10]),\n",
724 " ([9, 11], [1, 7, 5, 4, 3], [8, 10, 2]),\n",
725 " ([9, 11], [1, 7, 5, 4, 3], [10, 2, 8]),\n",
726 " ([9, 11], [1, 7, 5, 4, 3], [10, 8, 2]),\n",
727 " ([9, 11], [1, 7, 8, 4], [2, 3, 5, 10]),\n",
728 " ([9, 11], [1, 7, 8, 4], [2, 3, 10, 5]),\n",
729 " ([9, 11], [1, 7, 8, 4], [2, 5, 3, 10]),\n",
730 " ([9, 11], [1, 7, 8, 4], [2, 5, 10, 3]),\n",
731 " ([9, 11], [1, 7, 8, 4], [2, 10, 3, 5]),\n",
732 " ([9, 11], [1, 7, 8, 4], [2, 10, 5, 3]),\n",
733 " ([9, 11], [1, 7, 8, 4], [3, 2, 5, 10]),\n",
734 " ([9, 11], [1, 7, 8, 4], [3, 2, 10, 5]),\n",
735 " ([9, 11], [1, 7, 8, 4], [3, 5, 2, 10]),\n",
736 " ([9, 11], [1, 7, 8, 4], [3, 5, 10, 2]),\n",
737 " ([9, 11], [1, 7, 8, 4], [3, 10, 2, 5]),\n",
738 " ([9, 11], [1, 7, 8, 4], [3, 10, 5, 2]),\n",
739 " ([9, 11], [1, 7, 8, 4], [5, 2, 3, 10]),\n",
740 " ([9, 11], [1, 7, 8, 4], [5, 2, 10, 3]),\n",
741 " ([9, 11], [1, 7, 8, 4], [5, 3, 2, 10]),\n",
742 " ([9, 11], [1, 7, 8, 4], [5, 3, 10, 2]),\n",
743 " ([9, 11], [1, 7, 8, 4], [5, 10, 2, 3]),\n",
744 " ([9, 11], [1, 7, 8, 4], [5, 10, 3, 2]),\n",
745 " ([9, 11], [1, 7, 8, 4], [10, 2, 3, 5]),\n",
746 " ([9, 11], [1, 7, 8, 4], [10, 2, 5, 3]),\n",
747 " ([9, 11], [1, 7, 8, 4], [10, 3, 2, 5]),\n",
748 " ([9, 11], [1, 7, 8, 4], [10, 3, 5, 2]),\n",
749 " ([9, 11], [1, 7, 8, 4], [10, 5, 2, 3]),\n",
750 " ([9, 11], [1, 7, 8, 4], [10, 5, 3, 2]),\n",
751 " ([9, 11], [1, 7, 10, 2], [3, 4, 5, 8]),\n",
752 " ([9, 11], [1, 7, 10, 2], [3, 4, 8, 5]),\n",
753 " ([9, 11], [1, 7, 10, 2], [3, 5, 4, 8]),\n",
754 " ([9, 11], [1, 7, 10, 2], [3, 5, 8, 4]),\n",
755 " ([9, 11], [1, 7, 10, 2], [3, 8, 4, 5]),\n",
756 " ([9, 11], [1, 7, 10, 2], [3, 8, 5, 4]),\n",
757 " ([9, 11], [1, 7, 10, 2], [4, 3, 5, 8]),\n",
758 " ([9, 11], [1, 7, 10, 2], [4, 3, 8, 5]),\n",
759 " ([9, 11], [1, 7, 10, 2], [4, 5, 3, 8]),\n",
760 " ([9, 11], [1, 7, 10, 2], [4, 5, 8, 3]),\n",
761 " ([9, 11], [1, 7, 10, 2], [4, 8, 3, 5]),\n",
762 " ([9, 11], [1, 7, 10, 2], [4, 8, 5, 3]),\n",
763 " ([9, 11], [1, 7, 10, 2], [5, 3, 4, 8]),\n",
764 " ([9, 11], [1, 7, 10, 2], [5, 3, 8, 4]),\n",
765 " ([9, 11], [1, 7, 10, 2], [5, 4, 3, 8]),\n",
766 " ([9, 11], [1, 7, 10, 2], [5, 4, 8, 3]),\n",
767 " ([9, 11], [1, 7, 10, 2], [5, 8, 3, 4]),\n",
768 " ([9, 11], [1, 7, 10, 2], [5, 8, 4, 3]),\n",
769 " ([9, 11], [1, 7, 10, 2], [8, 3, 4, 5]),\n",
770 " ([9, 11], [1, 7, 10, 2], [8, 3, 5, 4]),\n",
771 " ([9, 11], [1, 7, 10, 2], [8, 4, 3, 5]),\n",
772 " ([9, 11], [1, 7, 10, 2], [8, 4, 5, 3]),\n",
773 " ([9, 11], [1, 7, 10, 2], [8, 5, 3, 4]),\n",
774 " ([9, 11], [1, 7, 10, 2], [8, 5, 4, 3]),\n",
775 " ([9, 11], [1, 8, 2, 4, 5], [3, 7, 10]),\n",
776 " ([9, 11], [1, 8, 2, 4, 5], [3, 10, 7]),\n",
777 " ([9, 11], [1, 8, 2, 4, 5], [7, 3, 10]),\n",
778 " ([9, 11], [1, 8, 2, 4, 5], [7, 10, 3]),\n",
779 " ([9, 11], [1, 8, 2, 4, 5], [10, 3, 7]),\n",
780 " ([9, 11], [1, 8, 2, 4, 5], [10, 7, 3]),\n",
781 " ([9, 11], [1, 8, 2, 5, 4], [3, 7, 10]),\n",
782 " ([9, 11], [1, 8, 2, 5, 4], [3, 10, 7]),\n",
783 " ([9, 11], [1, 8, 2, 5, 4], [7, 3, 10]),\n",
784 " ([9, 11], [1, 8, 2, 5, 4], [7, 10, 3]),\n",
785 " ([9, 11], [1, 8, 2, 5, 4], [10, 3, 7]),\n",
786 " ([9, 11], [1, 8, 2, 5, 4], [10, 7, 3]),\n",
787 " ([9, 11], [1, 8, 4, 2, 5], [3, 7, 10]),\n",
788 " ([9, 11], [1, 8, 4, 2, 5], [3, 10, 7]),\n",
789 " ([9, 11], [1, 8, 4, 2, 5], [7, 3, 10]),\n",
790 " ([9, 11], [1, 8, 4, 2, 5], [7, 10, 3]),\n",
791 " ([9, 11], [1, 8, 4, 2, 5], [10, 3, 7]),\n",
792 " ([9, 11], [1, 8, 4, 2, 5], [10, 7, 3]),\n",
793 " ([9, 11], [1, 8, 4, 5, 2], [3, 7, 10]),\n",
794 " ([9, 11], [1, 8, 4, 5, 2], [3, 10, 7]),\n",
795 " ([9, 11], [1, 8, 4, 5, 2], [7, 3, 10]),\n",
796 " ([9, 11], [1, 8, 4, 5, 2], [7, 10, 3]),\n",
797 " ([9, 11], [1, 8, 4, 5, 2], [10, 3, 7]),\n",
798 " ([9, 11], [1, 8, 4, 5, 2], [10, 7, 3]),\n",
799 " ([9, 11], [1, 8, 4, 7], [2, 3, 5, 10]),\n",
800 " ([9, 11], [1, 8, 4, 7], [2, 3, 10, 5]),\n",
801 " ([9, 11], [1, 8, 4, 7], [2, 5, 3, 10]),\n",
802 " ([9, 11], [1, 8, 4, 7], [2, 5, 10, 3]),\n",
803 " ([9, 11], [1, 8, 4, 7], [2, 10, 3, 5]),\n",
804 " ([9, 11], [1, 8, 4, 7], [2, 10, 5, 3]),\n",
805 " ([9, 11], [1, 8, 4, 7], [3, 2, 5, 10]),\n",
806 " ([9, 11], [1, 8, 4, 7], [3, 2, 10, 5]),\n",
807 " ([9, 11], [1, 8, 4, 7], [3, 5, 2, 10]),\n",
808 " ([9, 11], [1, 8, 4, 7], [3, 5, 10, 2]),\n",
809 " ([9, 11], [1, 8, 4, 7], [3, 10, 2, 5]),\n",
810 " ([9, 11], [1, 8, 4, 7], [3, 10, 5, 2]),\n",
811 " ([9, 11], [1, 8, 4, 7], [5, 2, 3, 10]),\n",
812 " ([9, 11], [1, 8, 4, 7], [5, 2, 10, 3]),\n",
813 " ([9, 11], [1, 8, 4, 7], [5, 3, 2, 10]),\n",
814 " ([9, 11], [1, 8, 4, 7], [5, 3, 10, 2]),\n",
815 " ([9, 11], [1, 8, 4, 7], [5, 10, 2, 3]),\n",
816 " ([9, 11], [1, 8, 4, 7], [5, 10, 3, 2]),\n",
817 " ([9, 11], [1, 8, 4, 7], [10, 2, 3, 5]),\n",
818 " ([9, 11], [1, 8, 4, 7], [10, 2, 5, 3]),\n",
819 " ([9, 11], [1, 8, 4, 7], [10, 3, 2, 5]),\n",
820 " ([9, 11], [1, 8, 4, 7], [10, 3, 5, 2]),\n",
821 " ([9, 11], [1, 8, 4, 7], [10, 5, 2, 3]),\n",
822 " ([9, 11], [1, 8, 4, 7], [10, 5, 3, 2]),\n",
823 " ([9, 11], [1, 8, 5, 2, 4], [3, 7, 10]),\n",
824 " ([9, 11], [1, 8, 5, 2, 4], [3, 10, 7]),\n",
825 " ([9, 11], [1, 8, 5, 2, 4], [7, 3, 10]),\n",
826 " ([9, 11], [1, 8, 5, 2, 4], [7, 10, 3]),\n",
827 " ([9, 11], [1, 8, 5, 2, 4], [10, 3, 7]),\n",
828 " ([9, 11], [1, 8, 5, 2, 4], [10, 7, 3]),\n",
829 " ([9, 11], [1, 8, 5, 4, 2], [3, 7, 10]),\n",
830 " ([9, 11], [1, 8, 5, 4, 2], [3, 10, 7]),\n",
831 " ([9, 11], [1, 8, 5, 4, 2], [7, 3, 10]),\n",
832 " ([9, 11], [1, 8, 5, 4, 2], [7, 10, 3]),\n",
833 " ([9, 11], [1, 8, 5, 4, 2], [10, 3, 7]),\n",
834 " ([9, 11], [1, 8, 5, 4, 2], [10, 7, 3]),\n",
835 " ([9, 11], [1, 8, 7, 4], [2, 3, 5, 10]),\n",
836 " ([9, 11], [1, 8, 7, 4], [2, 3, 10, 5]),\n",
837 " ([9, 11], [1, 8, 7, 4], [2, 5, 3, 10]),\n",
838 " ([9, 11], [1, 8, 7, 4], [2, 5, 10, 3]),\n",
839 " ([9, 11], [1, 8, 7, 4], [2, 10, 3, 5]),\n",
840 " ([9, 11], [1, 8, 7, 4], [2, 10, 5, 3]),\n",
841 " ([9, 11], [1, 8, 7, 4], [3, 2, 5, 10]),\n",
842 " ([9, 11], [1, 8, 7, 4], [3, 2, 10, 5]),\n",
843 " ([9, 11], [1, 8, 7, 4], [3, 5, 2, 10]),\n",
844 " ([9, 11], [1, 8, 7, 4], [3, 5, 10, 2]),\n",
845 " ([9, 11], [1, 8, 7, 4], [3, 10, 2, 5]),\n",
846 " ([9, 11], [1, 8, 7, 4], [3, 10, 5, 2]),\n",
847 " ([9, 11], [1, 8, 7, 4], [5, 2, 3, 10]),\n",
848 " ([9, 11], [1, 8, 7, 4], [5, 2, 10, 3]),\n",
849 " ([9, 11], [1, 8, 7, 4], [5, 3, 2, 10]),\n",
850 " ([9, 11], [1, 8, 7, 4], [5, 3, 10, 2]),\n",
851 " ([9, 11], [1, 8, 7, 4], [5, 10, 2, 3]),\n",
852 " ([9, 11], [1, 8, 7, 4], [5, 10, 3, 2]),\n",
853 " ([9, 11], [1, 8, 7, 4], [10, 2, 3, 5]),\n",
854 " ([9, 11], [1, 8, 7, 4], [10, 2, 5, 3]),\n",
855 " ([9, 11], [1, 8, 7, 4], [10, 3, 2, 5]),\n",
856 " ([9, 11], [1, 8, 7, 4], [10, 3, 5, 2]),\n",
857 " ([9, 11], [1, 8, 7, 4], [10, 5, 2, 3]),\n",
858 " ([9, 11], [1, 8, 7, 4], [10, 5, 3, 2]),\n",
859 " ([9, 11], [1, 10, 2, 3, 4], [5, 7, 8]),\n",
860 " ([9, 11], [1, 10, 2, 3, 4], [5, 8, 7]),\n",
861 " ([9, 11], [1, 10, 2, 3, 4], [7, 5, 8]),\n",
862 " ([9, 11], [1, 10, 2, 3, 4], [7, 8, 5]),\n",
863 " ([9, 11], [1, 10, 2, 3, 4], [8, 5, 7]),\n",
864 " ([9, 11], [1, 10, 2, 3, 4], [8, 7, 5]),\n",
865 " ([9, 11], [1, 10, 2, 4, 3], [5, 7, 8]),\n",
866 " ([9, 11], [1, 10, 2, 4, 3], [5, 8, 7]),\n",
867 " ([9, 11], [1, 10, 2, 4, 3], [7, 5, 8]),\n",
868 " ([9, 11], [1, 10, 2, 4, 3], [7, 8, 5]),\n",
869 " ([9, 11], [1, 10, 2, 4, 3], [8, 5, 7]),\n",
870 " ([9, 11], [1, 10, 2, 4, 3], [8, 7, 5]),\n",
871 " ([9, 11], [1, 10, 2, 7], [3, 4, 5, 8]),\n",
872 " ([9, 11], [1, 10, 2, 7], [3, 4, 8, 5]),\n",
873 " ([9, 11], [1, 10, 2, 7], [3, 5, 4, 8]),\n",
874 " ([9, 11], [1, 10, 2, 7], [3, 5, 8, 4]),\n",
875 " ([9, 11], [1, 10, 2, 7], [3, 8, 4, 5]),\n",
876 " ([9, 11], [1, 10, 2, 7], [3, 8, 5, 4]),\n",
877 " ([9, 11], [1, 10, 2, 7], [4, 3, 5, 8]),\n",
878 " ([9, 11], [1, 10, 2, 7], [4, 3, 8, 5]),\n",
879 " ([9, 11], [1, 10, 2, 7], [4, 5, 3, 8]),\n",
880 " ([9, 11], [1, 10, 2, 7], [4, 5, 8, 3]),\n",
881 " ([9, 11], [1, 10, 2, 7], [4, 8, 3, 5]),\n",
882 " ([9, 11], [1, 10, 2, 7], [4, 8, 5, 3]),\n",
883 " ([9, 11], [1, 10, 2, 7], [5, 3, 4, 8]),\n",
884 " ([9, 11], [1, 10, 2, 7], [5, 3, 8, 4]),\n",
885 " ([9, 11], [1, 10, 2, 7], [5, 4, 3, 8]),\n",
886 " ([9, 11], [1, 10, 2, 7], [5, 4, 8, 3]),\n",
887 " ([9, 11], [1, 10, 2, 7], [5, 8, 3, 4]),\n",
888 " ([9, 11], [1, 10, 2, 7], [5, 8, 4, 3]),\n",
889 " ([9, 11], [1, 10, 2, 7], [8, 3, 4, 5]),\n",
890 " ([9, 11], [1, 10, 2, 7], [8, 3, 5, 4]),\n",
891 " ([9, 11], [1, 10, 2, 7], [8, 4, 3, 5]),\n",
892 " ([9, 11], [1, 10, 2, 7], [8, 4, 5, 3]),\n",
893 " ([9, 11], [1, 10, 2, 7], [8, 5, 3, 4]),\n",
894 " ([9, 11], [1, 10, 2, 7], [8, 5, 4, 3]),\n",
895 " ([9, 11], [1, 10, 3, 2, 4], [5, 7, 8]),\n",
896 " ([9, 11], [1, 10, 3, 2, 4], [5, 8, 7]),\n",
897 " ([9, 11], [1, 10, 3, 2, 4], [7, 5, 8]),\n",
898 " ([9, 11], [1, 10, 3, 2, 4], [7, 8, 5]),\n",
899 " ([9, 11], [1, 10, 3, 2, 4], [8, 5, 7]),\n",
900 " ([9, 11], [1, 10, 3, 2, 4], [8, 7, 5]),\n",
901 " ([9, 11], [1, 10, 3, 4, 2], [5, 7, 8]),\n",
902 " ([9, 11], [1, 10, 3, 4, 2], [5, 8, 7]),\n",
903 " ([9, 11], [1, 10, 3, 4, 2], [7, 5, 8]),\n",
904 " ([9, 11], [1, 10, 3, 4, 2], [7, 8, 5]),\n",
905 " ([9, 11], [1, 10, 3, 4, 2], [8, 5, 7]),\n",
906 " ([9, 11], [1, 10, 3, 4, 2], [8, 7, 5]),\n",
907 " ([9, 11], [1, 10, 4, 2, 3], [5, 7, 8]),\n",
908 " ([9, 11], [1, 10, 4, 2, 3], [5, 8, 7]),\n",
909 " ([9, 11], [1, 10, 4, 2, 3], [7, 5, 8]),\n",
910 " ([9, 11], [1, 10, 4, 2, 3], [7, 8, 5]),\n",
911 " ([9, 11], [1, 10, 4, 2, 3], [8, 5, 7]),\n",
912 " ([9, 11], [1, 10, 4, 2, 3], [8, 7, 5]),\n",
913 " ([9, 11], [1, 10, 4, 3, 2], [5, 7, 8]),\n",
914 " ([9, 11], [1, 10, 4, 3, 2], [5, 8, 7]),\n",
915 " ([9, 11], [1, 10, 4, 3, 2], [7, 5, 8]),\n",
916 " ([9, 11], [1, 10, 4, 3, 2], [7, 8, 5]),\n",
917 " ([9, 11], [1, 10, 4, 3, 2], [8, 5, 7]),\n",
918 " ([9, 11], [1, 10, 4, 3, 2], [8, 7, 5]),\n",
919 " ([9, 11], [1, 10, 4, 5], [2, 3, 7, 8]),\n",
920 " ([9, 11], [1, 10, 4, 5], [2, 3, 8, 7]),\n",
921 " ([9, 11], [1, 10, 4, 5], [2, 7, 3, 8]),\n",
922 " ([9, 11], [1, 10, 4, 5], [2, 7, 8, 3]),\n",
923 " ([9, 11], [1, 10, 4, 5], [2, 8, 3, 7]),\n",
924 " ([9, 11], [1, 10, 4, 5], [2, 8, 7, 3]),\n",
925 " ([9, 11], [1, 10, 4, 5], [3, 2, 7, 8]),\n",
926 " ([9, 11], [1, 10, 4, 5], [3, 2, 8, 7]),\n",
927 " ([9, 11], [1, 10, 4, 5], [3, 7, 2, 8]),\n",
928 " ([9, 11], [1, 10, 4, 5], [3, 7, 8, 2]),\n",
929 " ([9, 11], [1, 10, 4, 5], [3, 8, 2, 7]),\n",
930 " ([9, 11], [1, 10, 4, 5], [3, 8, 7, 2]),\n",
931 " ([9, 11], [1, 10, 4, 5], [7, 2, 3, 8]),\n",
932 " ([9, 11], [1, 10, 4, 5], [7, 2, 8, 3]),\n",
933 " ([9, 11], [1, 10, 4, 5], [7, 3, 2, 8]),\n",
934 " ([9, 11], [1, 10, 4, 5], [7, 3, 8, 2]),\n",
935 " ([9, 11], [1, 10, 4, 5], [7, 8, 2, 3]),\n",
936 " ([9, 11], [1, 10, 4, 5], [7, 8, 3, 2]),\n",
937 " ([9, 11], [1, 10, 4, 5], [8, 2, 3, 7]),\n",
938 " ([9, 11], [1, 10, 4, 5], [8, 2, 7, 3]),\n",
939 " ([9, 11], [1, 10, 4, 5], [8, 3, 2, 7]),\n",
940 " ([9, 11], [1, 10, 4, 5], [8, 3, 7, 2]),\n",
941 " ([9, 11], [1, 10, 4, 5], [8, 7, 2, 3]),\n",
942 " ([9, 11], [1, 10, 4, 5], [8, 7, 3, 2]),\n",
943 " ([9, 11], [1, 10, 5, 4], [2, 3, 7, 8]),\n",
944 " ([9, 11], [1, 10, 5, 4], [2, 3, 8, 7]),\n",
945 " ([9, 11], [1, 10, 5, 4], [2, 7, 3, 8]),\n",
946 " ([9, 11], [1, 10, 5, 4], [2, 7, 8, 3]),\n",
947 " ([9, 11], [1, 10, 5, 4], [2, 8, 3, 7]),\n",
948 " ([9, 11], [1, 10, 5, 4], [2, 8, 7, 3]),\n",
949 " ([9, 11], [1, 10, 5, 4], [3, 2, 7, 8]),\n",
950 " ([9, 11], [1, 10, 5, 4], [3, 2, 8, 7]),\n",
951 " ([9, 11], [1, 10, 5, 4], [3, 7, 2, 8]),\n",
952 " ([9, 11], [1, 10, 5, 4], [3, 7, 8, 2]),\n",
953 " ([9, 11], [1, 10, 5, 4], [3, 8, 2, 7]),\n",
954 " ([9, 11], [1, 10, 5, 4], [3, 8, 7, 2]),\n",
955 " ([9, 11], [1, 10, 5, 4], [7, 2, 3, 8]),\n",
956 " ([9, 11], [1, 10, 5, 4], [7, 2, 8, 3]),\n",
957 " ([9, 11], [1, 10, 5, 4], [7, 3, 2, 8]),\n",
958 " ([9, 11], [1, 10, 5, 4], [7, 3, 8, 2]),\n",
959 " ([9, 11], [1, 10, 5, 4], [7, 8, 2, 3]),\n",
960 " ([9, 11], [1, 10, 5, 4], [7, 8, 3, 2]),\n",
961 " ([9, 11], [1, 10, 5, 4], [8, 2, 3, 7]),\n",
962 " ([9, 11], [1, 10, 5, 4], [8, 2, 7, 3]),\n",
963 " ([9, 11], [1, 10, 5, 4], [8, 3, 2, 7]),\n",
964 " ([9, 11], [1, 10, 5, 4], [8, 3, 7, 2]),\n",
965 " ([9, 11], [1, 10, 5, 4], [8, 7, 2, 3]),\n",
966 " ([9, 11], [1, 10, 5, 4], [8, 7, 3, 2]),\n",
967 " ([9, 11], [1, 10, 7, 2], [3, 4, 5, 8]),\n",
968 " ([9, 11], [1, 10, 7, 2], [3, 4, 8, 5]),\n",
969 " ([9, 11], [1, 10, 7, 2], [3, 5, 4, 8]),\n",
970 " ([9, 11], [1, 10, 7, 2], [3, 5, 8, 4]),\n",
971 " ([9, 11], [1, 10, 7, 2], [3, 8, 4, 5]),\n",
972 " ([9, 11], [1, 10, 7, 2], [3, 8, 5, 4]),\n",
973 " ([9, 11], [1, 10, 7, 2], [4, 3, 5, 8]),\n",
974 " ([9, 11], [1, 10, 7, 2], [4, 3, 8, 5]),\n",
975 " ([9, 11], [1, 10, 7, 2], [4, 5, 3, 8]),\n",
976 " ([9, 11], [1, 10, 7, 2], [4, 5, 8, 3]),\n",
977 " ([9, 11], [1, 10, 7, 2], [4, 8, 3, 5]),\n",
978 " ([9, 11], [1, 10, 7, 2], [4, 8, 5, 3]),\n",
979 " ([9, 11], [1, 10, 7, 2], [5, 3, 4, 8]),\n",
980 " ([9, 11], [1, 10, 7, 2], [5, 3, 8, 4]),\n",
981 " ([9, 11], [1, 10, 7, 2], [5, 4, 3, 8]),\n",
982 " ([9, 11], [1, 10, 7, 2], [5, 4, 8, 3]),\n",
983 " ([9, 11], [1, 10, 7, 2], [5, 8, 3, 4]),\n",
984 " ([9, 11], [1, 10, 7, 2], [5, 8, 4, 3]),\n",
985 " ([9, 11], [1, 10, 7, 2], [8, 3, 4, 5]),\n",
986 " ([9, 11], [1, 10, 7, 2], [8, 3, 5, 4]),\n",
987 " ([9, 11], [1, 10, 7, 2], [8, 4, 3, 5]),\n",
988 " ([9, 11], [1, 10, 7, 2], [8, 4, 5, 3]),\n",
989 " ([9, 11], [1, 10, 7, 2], [8, 5, 3, 4]),\n",
990 " ([9, 11], [1, 10, 7, 2], [8, 5, 4, 3]),\n",
991 " ([9, 11], [2, 1, 3, 4, 10], [5, 7, 8]),\n",
992 " ([9, 11], [2, 1, 3, 4, 10], [5, 8, 7]),\n",
993 " ([9, 11], [2, 1, 3, 4, 10], [7, 5, 8]),\n",
994 " ([9, 11], [2, 1, 3, 4, 10], [7, 8, 5]),\n",
995 " ([9, 11], [2, 1, 3, 4, 10], [8, 5, 7]),\n",
996 " ([9, 11], [2, 1, 3, 4, 10], [8, 7, 5]),\n",
997 " ([9, 11], [2, 1, 3, 10, 4], [5, 7, 8]),\n",
998 " ([9, 11], [2, 1, 3, 10, 4], [5, 8, 7]),\n",
999 " ([9, 11], [2, 1, 3, 10, 4], [7, 5, 8]),\n",
1000 " ([9, 11], [2, 1, 3, 10, 4], [7, 8, 5]),\n",
1001 " ([9, 11], [2, 1, 3, 10, 4], [8, 5, 7]),\n",
1002 " ([9, 11], [2, 1, 3, 10, 4], [8, 7, 5]),\n",
1003 " ([9, 11], [2, 1, 4, 3, 10], [5, 7, 8]),\n",
1004 " ([9, 11], [2, 1, 4, 3, 10], [5, 8, 7]),\n",
1005 " ([9, 11], [2, 1, 4, 3, 10], [7, 5, 8]),\n",
1006 " ([9, 11], [2, 1, 4, 3, 10], [7, 8, 5]),\n",
1007 " ([9, 11], [2, 1, 4, 3, 10], [8, 5, 7]),\n",
1008 " ([9, 11], [2, 1, 4, 3, 10], [8, 7, 5]),\n",
1009 " ([9, 11], [2, 1, 4, 5, 8], [3, 7, 10]),\n",
1010 " ([9, 11], [2, 1, 4, 5, 8], [3, 10, 7]),\n",
1011 " ([9, 11], [2, 1, 4, 5, 8], [7, 3, 10]),\n",
1012 " ([9, 11], [2, 1, 4, 5, 8], [7, 10, 3]),\n",
1013 " ([9, 11], [2, 1, 4, 5, 8], [10, 3, 7]),\n",
1014 " ([9, 11], [2, 1, 4, 5, 8], [10, 7, 3]),\n",
1015 " ([9, 11], [2, 1, 4, 8, 5], [3, 7, 10]),\n",
1016 " ([9, 11], [2, 1, 4, 8, 5], [3, 10, 7]),\n",
1017 " ([9, 11], [2, 1, 4, 8, 5], [7, 3, 10]),\n",
1018 " ([9, 11], [2, 1, 4, 8, 5], [7, 10, 3]),\n",
1019 " ([9, 11], [2, 1, 4, 8, 5], [10, 3, 7]),\n",
1020 " ([9, 11], [2, 1, 4, 8, 5], [10, 7, 3]),\n",
1021 " ([9, 11], [2, 1, 4, 10, 3], [5, 7, 8]),\n",
1022 " ([9, 11], [2, 1, 4, 10, 3], [5, 8, 7]),\n",
1023 " ([9, 11], [2, 1, 4, 10, 3], [7, 5, 8]),\n",
1024 " ([9, 11], [2, 1, 4, 10, 3], [7, 8, 5]),\n",
1025 " ([9, 11], [2, 1, 4, 10, 3], [8, 5, 7]),\n",
1026 " ([9, 11], [2, 1, 4, 10, 3], [8, 7, 5]),\n",
1027 " ([9, 11], [2, 1, 5, 4, 8], [3, 7, 10]),\n",
1028 " ([9, 11], [2, 1, 5, 4, 8], [3, 10, 7]),\n",
1029 " ([9, 11], [2, 1, 5, 4, 8], [7, 3, 10]),\n",
1030 " ([9, 11], [2, 1, 5, 4, 8], [7, 10, 3]),\n",
1031 " ([9, 11], [2, 1, 5, 4, 8], [10, 3, 7]),\n",
1032 " ([9, 11], [2, 1, 5, 4, 8], [10, 7, 3]),\n",
1033 " ([9, 11], [2, 1, 5, 8, 4], [3, 7, 10]),\n",
1034 " ([9, 11], [2, 1, 5, 8, 4], [3, 10, 7]),\n",
1035 " ([9, 11], [2, 1, 5, 8, 4], [7, 3, 10]),\n",
1036 " ([9, 11], [2, 1, 5, 8, 4], [7, 10, 3]),\n",
1037 " ([9, 11], [2, 1, 5, 8, 4], [10, 3, 7]),\n",
1038 " ([9, 11], [2, 1, 5, 8, 4], [10, 7, 3]),\n",
1039 " ([9, 11], [2, 1, 7, 10], [3, 4, 5, 8]),\n",
1040 " ([9, 11], [2, 1, 7, 10], [3, 4, 8, 5]),\n",
1041 " ([9, 11], [2, 1, 7, 10], [3, 5, 4, 8]),\n",
1042 " ([9, 11], [2, 1, 7, 10], [3, 5, 8, 4]),\n",
1043 " ([9, 11], [2, 1, 7, 10], [3, 8, 4, 5]),\n",
1044 " ([9, 11], [2, 1, 7, 10], [3, 8, 5, 4]),\n",
1045 " ([9, 11], [2, 1, 7, 10], [4, 3, 5, 8]),\n",
1046 " ([9, 11], [2, 1, 7, 10], [4, 3, 8, 5]),\n",
1047 " ([9, 11], [2, 1, 7, 10], [4, 5, 3, 8]),\n",
1048 " ([9, 11], [2, 1, 7, 10], [4, 5, 8, 3]),\n",
1049 " ([9, 11], [2, 1, 7, 10], [4, 8, 3, 5]),\n",
1050 " ([9, 11], [2, 1, 7, 10], [4, 8, 5, 3]),\n",
1051 " ([9, 11], [2, 1, 7, 10], [5, 3, 4, 8]),\n",
1052 " ([9, 11], [2, 1, 7, 10], [5, 3, 8, 4]),\n",
1053 " ([9, 11], [2, 1, 7, 10], [5, 4, 3, 8]),\n",
1054 " ([9, 11], [2, 1, 7, 10], [5, 4, 8, 3]),\n",
1055 " ([9, 11], [2, 1, 7, 10], [5, 8, 3, 4]),\n",
1056 " ([9, 11], [2, 1, 7, 10], [5, 8, 4, 3]),\n",
1057 " ([9, 11], [2, 1, 7, 10], [8, 3, 4, 5]),\n",
1058 " ([9, 11], [2, 1, 7, 10], [8, 3, 5, 4]),\n",
1059 " ([9, 11], [2, 1, 7, 10], [8, 4, 3, 5]),\n",
1060 " ([9, 11], [2, 1, 7, 10], [8, 4, 5, 3]),\n",
1061 " ([9, 11], [2, 1, 7, 10], [8, 5, 3, 4]),\n",
1062 " ([9, 11], [2, 1, 7, 10], [8, 5, 4, 3]),\n",
1063 " ([9, 11], [2, 1, 8, 4, 5], [3, 7, 10]),\n",
1064 " ([9, 11], [2, 1, 8, 4, 5], [3, 10, 7]),\n",
1065 " ([9, 11], [2, 1, 8, 4, 5], [7, 3, 10]),\n",
1066 " ([9, 11], [2, 1, 8, 4, 5], [7, 10, 3]),\n",
1067 " ([9, 11], [2, 1, 8, 4, 5], [10, 3, 7]),\n",
1068 " ([9, 11], [2, 1, 8, 4, 5], [10, 7, 3]),\n",
1069 " ([9, 11], [2, 1, 8, 5, 4], [3, 7, 10]),\n",
1070 " ([9, 11], [2, 1, 8, 5, 4], [3, 10, 7]),\n",
1071 " ([9, 11], [2, 1, 8, 5, 4], [7, 3, 10]),\n",
1072 " ([9, 11], [2, 1, 8, 5, 4], [7, 10, 3]),\n",
1073 " ([9, 11], [2, 1, 8, 5, 4], [10, 3, 7]),\n",
1074 " ([9, 11], [2, 1, 8, 5, 4], [10, 7, 3]),\n",
1075 " ([9, 11], [2, 1, 10, 3, 4], [5, 7, 8]),\n",
1076 " ([9, 11], [2, 1, 10, 3, 4], [5, 8, 7]),\n",
1077 " ([9, 11], [2, 1, 10, 3, 4], [7, 5, 8]),\n",
1078 " ([9, 11], [2, 1, 10, 3, 4], [7, 8, 5]),\n",
1079 " ([9, 11], [2, 1, 10, 3, 4], [8, 5, 7]),\n",
1080 " ([9, 11], [2, 1, 10, 3, 4], [8, 7, 5]),\n",
1081 " ([9, 11], [2, 1, 10, 4, 3], [5, 7, 8]),\n",
1082 " ([9, 11], [2, 1, 10, 4, 3], [5, 8, 7]),\n",
1083 " ([9, 11], [2, 1, 10, 4, 3], [7, 5, 8]),\n",
1084 " ([9, 11], [2, 1, 10, 4, 3], [7, 8, 5]),\n",
1085 " ([9, 11], [2, 1, 10, 4, 3], [8, 5, 7]),\n",
1086 " ([9, 11], [2, 1, 10, 4, 3], [8, 7, 5]),\n",
1087 " ([9, 11], [2, 1, 10, 7], [3, 4, 5, 8]),\n",
1088 " ([9, 11], [2, 1, 10, 7], [3, 4, 8, 5]),\n",
1089 " ([9, 11], [2, 1, 10, 7], [3, 5, 4, 8]),\n",
1090 " ([9, 11], [2, 1, 10, 7], [3, 5, 8, 4]),\n",
1091 " ([9, 11], [2, 1, 10, 7], [3, 8, 4, 5]),\n",
1092 " ([9, 11], [2, 1, 10, 7], [3, 8, 5, 4]),\n",
1093 " ([9, 11], [2, 1, 10, 7], [4, 3, 5, 8]),\n",
1094 " ([9, 11], [2, 1, 10, 7], [4, 3, 8, 5]),\n",
1095 " ([9, 11], [2, 1, 10, 7], [4, 5, 3, 8]),\n",
1096 " ([9, 11], [2, 1, 10, 7], [4, 5, 8, 3]),\n",
1097 " ([9, 11], [2, 1, 10, 7], [4, 8, 3, 5]),\n",
1098 " ([9, 11], [2, 1, 10, 7], [4, 8, 5, 3]),\n",
1099 " ([9, 11], [2, 1, 10, 7], [5, 3, 4, 8]),\n",
1100 " ([9, 11], [2, 1, 10, 7], [5, 3, 8, 4]),\n",
1101 " ([9, 11], [2, 1, 10, 7], [5, 4, 3, 8]),\n",
1102 " ([9, 11], [2, 1, 10, 7], [5, 4, 8, 3]),\n",
1103 " ([9, 11], [2, 1, 10, 7], [5, 8, 3, 4]),\n",
1104 " ([9, 11], [2, 1, 10, 7], [5, 8, 4, 3]),\n",
1105 " ([9, 11], [2, 1, 10, 7], [8, 3, 4, 5]),\n",
1106 " ([9, 11], [2, 1, 10, 7], [8, 3, 5, 4]),\n",
1107 " ([9, 11], [2, 1, 10, 7], [8, 4, 3, 5]),\n",
1108 " ([9, 11], [2, 1, 10, 7], [8, 4, 5, 3]),\n",
1109 " ([9, 11], [2, 1, 10, 7], [8, 5, 3, 4]),\n",
1110 " ([9, 11], [2, 1, 10, 7], [8, 5, 4, 3]),\n",
1111 " ([9, 11], [2, 3, 1, 4, 10], [5, 7, 8]),\n",
1112 " ([9, 11], [2, 3, 1, 4, 10], [5, 8, 7]),\n",
1113 " ([9, 11], [2, 3, 1, 4, 10], [7, 5, 8]),\n",
1114 " ([9, 11], [2, 3, 1, 4, 10], [7, 8, 5]),\n",
1115 " ([9, 11], [2, 3, 1, 4, 10], [8, 5, 7]),\n",
1116 " ([9, 11], [2, 3, 1, 4, 10], [8, 7, 5]),\n",
1117 " ([9, 11], [2, 3, 1, 10, 4], [5, 7, 8]),\n",
1118 " ([9, 11], [2, 3, 1, 10, 4], [5, 8, 7]),\n",
1119 " ([9, 11], [2, 3, 1, 10, 4], [7, 5, 8]),\n",
1120 " ([9, 11], [2, 3, 1, 10, 4], [7, 8, 5]),\n",
1121 " ([9, 11], [2, 3, 1, 10, 4], [8, 5, 7]),\n",
1122 " ([9, 11], [2, 3, 1, 10, 4], [8, 7, 5]),\n",
1123 " ([9, 11], [2, 3, 4, 1, 10], [5, 7, 8]),\n",
1124 " ([9, 11], [2, 3, 4, 1, 10], [5, 8, 7]),\n",
1125 " ([9, 11], [2, 3, 4, 1, 10], [7, 5, 8]),\n",
1126 " ([9, 11], [2, 3, 4, 1, 10], [7, 8, 5]),\n",
1127 " ...]"
1128 ]
1129 },
1130 "execution_count": 18,
1131 "metadata": {},
1132 "output_type": "execute_result"
1133 }
1134 ],
1135 "source": [
1136 "#valids = []\n",
1137 "#for p in itertools.permutations(presents):\n",
1138 "# totals = itertools.accumulate(p)\n",
1139 "# pairs = zip(p, totals)\n",
1140 "# g1, g2, g3 = split(pairs)\n",
1141 "# if valid(g1, g2, g3):\n",
1142 "# valids += [(g1, g2, g3)]\n",
1143 "#valids"
1144 ]
1145 },
1146 {
1147 "cell_type": "code",
1148 "execution_count": 4,
1149 "metadata": {
1150 "collapsed": true
1151 },
1152 "outputs": [],
1153 "source": [
1154 "def subsets_with_sum(items, dsum):\n",
1155 " subsets = set()\n",
1156 " for i in range(len(items)):\n",
1157 " subsets |= set(frozenset(s) for s in itertools.combinations(items, i)\n",
1158 " if sum(s) == dsum)\n",
1159 " return subsets"
1160 ]
1161 },
1162 {
1163 "cell_type": "code",
1164 "execution_count": 5,
1165 "metadata": {
1166 "collapsed": false
1167 },
1168 "outputs": [
1169 {
1170 "data": {
1171 "text/plain": [
1172 "[(1, 2, 17), (2, 5, 13)]"
1173 ]
1174 },
1175 "execution_count": 5,
1176 "metadata": {},
1177 "output_type": "execute_result"
1178 }
1179 ],
1180 "source": [
1181 "list(filter(lambda s: sum(s) == 20, (s for s in itertools.combinations(presents, 3))))"
1182 ]
1183 },
1184 {
1185 "cell_type": "code",
1186 "execution_count": 6,
1187 "metadata": {
1188 "collapsed": false
1189 },
1190 "outputs": [
1191 {
1192 "data": {
1193 "text/plain": [
1194 "429102"
1195 ]
1196 },
1197 "execution_count": 6,
1198 "metadata": {},
1199 "output_type": "execute_result"
1200 }
1201 ],
1202 "source": [
1203 "subsets = subsets_with_sum(presents, group_weight)\n",
1204 "len(subsets)"
1205 ]
1206 },
1207 {
1208 "cell_type": "code",
1209 "execution_count": 23,
1210 "metadata": {
1211 "collapsed": false
1212 },
1213 "outputs": [
1214 {
1215 "data": {
1216 "text/plain": [
1217 "6"
1218 ]
1219 },
1220 "execution_count": 23,
1221 "metadata": {},
1222 "output_type": "execute_result"
1223 }
1224 ],
1225 "source": [
1226 "min(len(s) for s in subsets)"
1227 ]
1228 },
1229 {
1230 "cell_type": "code",
1231 "execution_count": 24,
1232 "metadata": {
1233 "collapsed": false
1234 },
1235 "outputs": [
1236 {
1237 "data": {
1238 "text/plain": [
1239 "True"
1240 ]
1241 },
1242 "execution_count": 24,
1243 "metadata": {},
1244 "output_type": "execute_result"
1245 }
1246 ],
1247 "source": [
1248 "g1_size = min(len(s) for s in subsets)\n",
1249 "g1_candidates = [s for s in subsets if len(s) == 6]\n",
1250 "g23_candidates = [s for s in subsets if len(s) > 6]\n",
1251 "len(subsets) == (len(g1_candidates) + len(g23_candidates))"
1252 ]
1253 },
1254 {
1255 "cell_type": "code",
1256 "execution_count": 25,
1257 "metadata": {
1258 "collapsed": false
1259 },
1260 "outputs": [
1261 {
1262 "data": {
1263 "text/plain": [
1264 "248"
1265 ]
1266 },
1267 "execution_count": 25,
1268 "metadata": {},
1269 "output_type": "execute_result"
1270 }
1271 ],
1272 "source": [
1273 "len(g1_candidates)"
1274 ]
1275 },
1276 {
1277 "cell_type": "code",
1278 "execution_count": 10,
1279 "metadata": {
1280 "collapsed": false
1281 },
1282 "outputs": [
1283 {
1284 "data": {
1285 "text/plain": [
1286 "[(frozenset({43, 79, 89, 97, 101, 103}),\n",
1287 " (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
1288 " frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}))),\n",
1289 " (frozenset({43, 79, 89, 97, 101, 103}),\n",
1290 " (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
1291 " frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
1292 " (frozenset({43, 79, 89, 97, 101, 103}),\n",
1293 " (frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}),\n",
1294 " frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
1295 " (frozenset({67, 73, 79, 89, 101, 103}),\n",
1296 " (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
1297 " frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}))),\n",
1298 " (frozenset({67, 73, 79, 89, 101, 103}),\n",
1299 " (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
1300 " frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
1301 " (frozenset({67, 73, 79, 89, 101, 103}),\n",
1302 " (frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}),\n",
1303 " frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89})))]"
1304 ]
1305 },
1306 "execution_count": 10,
1307 "metadata": {},
1308 "output_type": "execute_result"
1309 }
1310 ],
1311 "source": [
1312 "list(itertools.product(g1_candidates[:2], \n",
1313 " itertools.combinations(g23_candidates[:3], 2)))"
1314 ]
1315 },
1316 {
1317 "cell_type": "code",
1318 "execution_count": 33,
1319 "metadata": {
1320 "collapsed": true
1321 },
1322 "outputs": [],
1323 "source": [
1324 "def solutions(g1s, g23s):\n",
1325 " solutions = []\n",
1326 " for g1 in g1s:\n",
1327 " vg23s = [g for g in g23s if not g1 & g]\n",
1328 " if any(g23 for g23 in itertools.combinations(vg23s, 2)\n",
1329 " if not g23[0] & g23[1]):\n",
1330 " solutions += [g1]\n",
1331 " return solutions"
1332 ]
1333 },
1334 {
1335 "cell_type": "code",
1336 "execution_count": 30,
1337 "metadata": {
1338 "collapsed": false
1339 },
1340 "outputs": [
1341 {
1342 "data": {
1343 "text/plain": [
1344 "23901"
1345 ]
1346 },
1347 "execution_count": 30,
1348 "metadata": {},
1349 "output_type": "execute_result"
1350 }
1351 ],
1352 "source": [
1353 "vg23s = [g for g in g23_candidates if not g1_candidates[0] & g]\n",
1354 "len(vg23s)"
1355 ]
1356 },
1357 {
1358 "cell_type": "code",
1359 "execution_count": 34,
1360 "metadata": {
1361 "collapsed": false
1362 },
1363 "outputs": [
1364 {
1365 "data": {
1366 "text/plain": [
1367 "[frozenset({43, 79, 89, 97, 101, 103}),\n",
1368 " frozenset({67, 73, 79, 89, 101, 103}),\n",
1369 " frozenset({17, 73, 97, 103, 109, 113}),\n",
1370 " frozenset({43, 67, 83, 103, 107, 109}),\n",
1371 " frozenset({19, 71, 97, 103, 109, 113}),\n",
1372 " frozenset({19, 61, 103, 107, 109, 113}),\n",
1373 " frozenset({59, 61, 73, 97, 109, 113}),\n",
1374 " frozenset({53, 59, 83, 97, 107, 113}),\n",
1375 " frozenset({23, 83, 89, 97, 107, 113}),\n",
1376 " frozenset({53, 73, 83, 89, 101, 113}),\n",
1377 " frozenset({41, 59, 89, 103, 107, 113}),\n",
1378 " frozenset({41, 53, 89, 107, 109, 113}),\n",
1379 " frozenset({41, 61, 97, 101, 103, 109}),\n",
1380 " frozenset({61, 73, 79, 89, 97, 113}),\n",
1381 " frozenset({13, 89, 97, 101, 103, 109}),\n",
1382 " frozenset({53, 67, 73, 97, 109, 113}),\n",
1383 " frozenset({19, 73, 97, 103, 107, 113}),\n",
1384 " frozenset({43, 73, 83, 97, 107, 109}),\n",
1385 " frozenset({5, 83, 101, 103, 107, 113}),\n",
1386 " frozenset({61, 79, 83, 89, 97, 103}),\n",
1387 " frozenset({43, 59, 89, 101, 107, 113}),\n",
1388 " frozenset({53, 59, 79, 101, 107, 113}),\n",
1389 " frozenset({23, 73, 97, 103, 107, 109}),\n",
1390 " frozenset({37, 61, 89, 103, 109, 113}),\n",
1391 " frozenset({37, 53, 97, 103, 109, 113}),\n",
1392 " frozenset({41, 79, 83, 97, 103, 109}),\n",
1393 " frozenset({53, 61, 89, 97, 103, 109}),\n",
1394 " frozenset({67, 71, 73, 97, 101, 103}),\n",
1395 " frozenset({43, 73, 83, 97, 103, 113}),\n",
1396 " frozenset({41, 61, 89, 101, 107, 113}),\n",
1397 " frozenset({59, 61, 71, 101, 107, 113}),\n",
1398 " frozenset({13, 73, 97, 107, 109, 113}),\n",
1399 " frozenset({37, 73, 89, 97, 107, 109}),\n",
1400 " frozenset({5, 89, 97, 101, 107, 113}),\n",
1401 " frozenset({43, 73, 79, 97, 107, 113}),\n",
1402 " frozenset({29, 79, 83, 101, 107, 113}),\n",
1403 " frozenset({43, 67, 89, 101, 103, 109}),\n",
1404 " frozenset({53, 67, 79, 101, 103, 109}),\n",
1405 " frozenset({29, 73, 89, 101, 107, 113}),\n",
1406 " frozenset({53, 59, 89, 101, 103, 107}),\n",
1407 " frozenset({43, 73, 83, 101, 103, 109}),\n",
1408 " frozenset({59, 71, 73, 89, 107, 113}),\n",
1409 " frozenset({43, 61, 89, 103, 107, 109}),\n",
1410 " frozenset({53, 61, 79, 103, 107, 109}),\n",
1411 " frozenset({61, 71, 83, 89, 101, 107}),\n",
1412 " frozenset({59, 73, 79, 89, 103, 109}),\n",
1413 " frozenset({29, 83, 89, 101, 103, 107}),\n",
1414 " frozenset({41, 73, 79, 103, 107, 109}),\n",
1415 " frozenset({67, 73, 79, 83, 103, 107}),\n",
1416 " frozenset({61, 67, 71, 101, 103, 109}),\n",
1417 " frozenset({61, 71, 73, 97, 103, 107}),\n",
1418 " frozenset({71, 73, 79, 89, 97, 103}),\n",
1419 " frozenset({53, 59, 83, 101, 107, 109}),\n",
1420 " frozenset({23, 79, 97, 101, 103, 109}),\n",
1421 " frozenset({61, 67, 79, 89, 103, 113}),\n",
1422 " frozenset({59, 71, 83, 89, 97, 113}),\n",
1423 " frozenset({59, 61, 79, 97, 103, 113}),\n",
1424 " frozenset({43, 67, 73, 107, 109, 113}),\n",
1425 " frozenset({59, 71, 79, 89, 101, 113}),\n",
1426 " frozenset({53, 71, 79, 89, 107, 113}),\n",
1427 " frozenset({61, 71, 73, 97, 101, 109}),\n",
1428 " frozenset({43, 71, 79, 97, 109, 113}),\n",
1429 " frozenset({43, 71, 79, 103, 107, 109}),\n",
1430 " frozenset({37, 67, 89, 97, 109, 113}),\n",
1431 " frozenset({59, 71, 79, 83, 107, 113}),\n",
1432 " frozenset({43, 73, 79, 101, 107, 109}),\n",
1433 " frozenset({31, 61, 101, 103, 107, 109}),\n",
1434 " frozenset({31, 73, 83, 103, 109, 113}),\n",
1435 " frozenset({59, 67, 73, 97, 107, 109}),\n",
1436 " frozenset({61, 73, 79, 83, 103, 113}),\n",
1437 " frozenset({23, 59, 101, 107, 109, 113}),\n",
1438 " frozenset({37, 73, 79, 103, 107, 113}),\n",
1439 " frozenset({53, 59, 83, 101, 103, 113}),\n",
1440 " frozenset({43, 53, 97, 103, 107, 109}),\n",
1441 " frozenset({53, 71, 83, 89, 103, 113}),\n",
1442 " frozenset({43, 71, 73, 103, 109, 113}),\n",
1443 " frozenset({43, 79, 83, 97, 101, 109}),\n",
1444 " frozenset({17, 71, 101, 103, 107, 113}),\n",
1445 " frozenset({61, 73, 79, 89, 103, 107}),\n",
1446 " frozenset({53, 59, 89, 97, 101, 113}),\n",
1447 " frozenset({31, 79, 89, 97, 107, 109}),\n",
1448 " frozenset({1, 89, 97, 103, 109, 113}),\n",
1449 " frozenset({59, 71, 73, 97, 103, 109}),\n",
1450 " frozenset({31, 83, 89, 97, 103, 109}),\n",
1451 " frozenset({13, 79, 97, 101, 109, 113}),\n",
1452 " frozenset({37, 79, 89, 97, 101, 109}),\n",
1453 " frozenset({59, 71, 83, 89, 103, 107}),\n",
1454 " frozenset({41, 67, 79, 103, 109, 113}),\n",
1455 " frozenset({19, 73, 101, 103, 107, 109}),\n",
1456 " frozenset({59, 61, 79, 101, 103, 109}),\n",
1457 " frozenset({41, 67, 83, 101, 107, 113}),\n",
1458 " frozenset({37, 67, 79, 107, 109, 113}),\n",
1459 " frozenset({29, 59, 101, 103, 107, 113}),\n",
1460 " frozenset({17, 83, 89, 101, 109, 113}),\n",
1461 " frozenset({41, 73, 89, 97, 103, 109}),\n",
1462 " frozenset({67, 71, 79, 83, 103, 109}),\n",
1463 " frozenset({53, 71, 83, 97, 101, 107}),\n",
1464 " frozenset({13, 73, 101, 103, 109, 113}),\n",
1465 " frozenset({37, 73, 89, 101, 103, 109}),\n",
1466 " frozenset({31, 73, 89, 97, 109, 113}),\n",
1467 " frozenset({31, 67, 97, 101, 103, 113}),\n",
1468 " frozenset({19, 67, 97, 107, 109, 113}),\n",
1469 " frozenset({7, 89, 97, 103, 107, 109}),\n",
1470 " frozenset({19, 79, 97, 101, 107, 109}),\n",
1471 " frozenset({67, 73, 79, 83, 97, 113}),\n",
1472 " frozenset({43, 61, 83, 103, 109, 113}),\n",
1473 " frozenset({37, 71, 79, 103, 109, 113}),\n",
1474 " frozenset({23, 71, 89, 107, 109, 113}),\n",
1475 " frozenset({23, 83, 89, 101, 103, 113}),\n",
1476 " frozenset({31, 79, 83, 97, 109, 113}),\n",
1477 " frozenset({31, 61, 97, 101, 109, 113}),\n",
1478 " frozenset({29, 71, 89, 101, 109, 113}),\n",
1479 " frozenset({43, 67, 79, 103, 107, 113}),\n",
1480 " frozenset({1, 79, 103, 107, 109, 113}),\n",
1481 " frozenset({29, 61, 97, 103, 109, 113}),\n",
1482 " frozenset({7, 73, 103, 107, 109, 113}),\n",
1483 " frozenset({61, 73, 79, 83, 107, 109}),\n",
1484 " frozenset({53, 67, 73, 103, 107, 109}),\n",
1485 " frozenset({41, 71, 79, 101, 107, 113}),\n",
1486 " frozenset({61, 67, 71, 97, 103, 113}),\n",
1487 " frozenset({43, 73, 79, 101, 103, 113}),\n",
1488 " frozenset({43, 73, 89, 97, 101, 109}),\n",
1489 " frozenset({53, 73, 79, 97, 101, 109}),\n",
1490 " frozenset({43, 67, 83, 97, 109, 113}),\n",
1491 " frozenset({13, 83, 97, 103, 107, 109}),\n",
1492 " frozenset({31, 73, 89, 103, 107, 109}),\n",
1493 " frozenset({61, 67, 83, 89, 103, 109}),\n",
1494 " frozenset({59, 71, 83, 89, 101, 109}),\n",
1495 " frozenset({53, 71, 83, 89, 107, 109}),\n",
1496 " frozenset({3, 79, 101, 107, 109, 113}),\n",
1497 " frozenset({61, 71, 79, 97, 101, 103}),\n",
1498 " frozenset({59, 73, 79, 97, 101, 103}),\n",
1499 " frozenset({7, 79, 97, 107, 109, 113}),\n",
1500 " frozenset({61, 67, 79, 89, 107, 109}),\n",
1501 " frozenset({43, 67, 89, 97, 107, 109}),\n",
1502 " frozenset({53, 67, 79, 97, 107, 109}),\n",
1503 " frozenset({61, 67, 73, 97, 101, 113}),\n",
1504 " frozenset({37, 73, 83, 103, 107, 109}),\n",
1505 " frozenset({43, 73, 89, 97, 103, 107}),\n",
1506 " frozenset({53, 73, 79, 97, 103, 107}),\n",
1507 " frozenset({37, 73, 83, 97, 109, 113}),\n",
1508 " frozenset({37, 67, 97, 101, 103, 107}),\n",
1509 " frozenset({13, 79, 97, 103, 107, 113}),\n",
1510 " frozenset({37, 79, 89, 97, 103, 107}),\n",
1511 " frozenset({31, 67, 89, 103, 109, 113}),\n",
1512 " frozenset({53, 67, 83, 97, 103, 109}),\n",
1513 " frozenset({41, 71, 89, 97, 101, 113}),\n",
1514 " frozenset({67, 71, 73, 79, 109, 113}),\n",
1515 " frozenset({37, 79, 83, 97, 107, 109}),\n",
1516 " frozenset({13, 67, 103, 107, 109, 113}),\n",
1517 " frozenset({37, 67, 89, 103, 107, 109}),\n",
1518 " frozenset({3, 83, 97, 107, 109, 113}),\n",
1519 " frozenset({67, 73, 79, 83, 101, 109}),\n",
1520 " frozenset({41, 73, 79, 97, 109, 113}),\n",
1521 " frozenset({37, 71, 83, 101, 107, 113}),\n",
1522 " frozenset({59, 61, 67, 103, 109, 113}),\n",
1523 " frozenset({37, 79, 83, 97, 103, 113}),\n",
1524 " frozenset({41, 79, 83, 89, 107, 113}),\n",
1525 " frozenset({41, 53, 97, 101, 107, 113}),\n",
1526 " frozenset({37, 73, 89, 97, 103, 113}),\n",
1527 " frozenset({23, 67, 97, 103, 109, 113}),\n",
1528 " frozenset({23, 71, 97, 101, 107, 113}),\n",
1529 " frozenset({3, 89, 97, 103, 107, 113}),\n",
1530 " frozenset({19, 79, 89, 103, 109, 113}),\n",
1531 " frozenset({37, 59, 97, 103, 107, 109}),\n",
1532 " frozenset({19, 83, 97, 101, 103, 109}),\n",
1533 " frozenset({61, 67, 73, 89, 109, 113}),\n",
1534 " frozenset({7, 79, 101, 103, 109, 113}),\n",
1535 " frozenset({17, 79, 97, 103, 107, 109}),\n",
1536 " frozenset({41, 71, 89, 101, 103, 107}),\n",
1537 " frozenset({31, 79, 89, 101, 103, 109}),\n",
1538 " frozenset({29, 53, 101, 107, 109, 113}),\n",
1539 " frozenset({61, 73, 83, 89, 97, 109}),\n",
1540 " frozenset({43, 67, 89, 97, 103, 113}),\n",
1541 " frozenset({53, 67, 79, 97, 103, 113}),\n",
1542 " frozenset({43, 71, 89, 97, 103, 109}),\n",
1543 " frozenset({53, 71, 79, 97, 103, 109}),\n",
1544 " frozenset({53, 59, 71, 107, 109, 113}),\n",
1545 " frozenset({67, 71, 79, 89, 97, 109}),\n",
1546 " frozenset({53, 67, 83, 89, 107, 113}),\n",
1547 " frozenset({59, 67, 83, 89, 101, 113}),\n",
1548 " frozenset({31, 59, 97, 103, 109, 113}),\n",
1549 " frozenset({59, 73, 83, 89, 101, 107}),\n",
1550 " frozenset({59, 61, 83, 97, 103, 109}),\n",
1551 " frozenset({41, 71, 83, 101, 107, 109}),\n",
1552 " frozenset({3, 89, 97, 101, 109, 113}),\n",
1553 " frozenset({31, 73, 79, 107, 109, 113}),\n",
1554 " frozenset({61, 67, 79, 83, 109, 113}),\n",
1555 " frozenset({17, 83, 89, 103, 107, 113}),\n",
1556 " frozenset({71, 73, 79, 83, 97, 109}),\n",
1557 " frozenset({43, 59, 97, 101, 103, 109}),\n",
1558 " frozenset({41, 71, 83, 101, 103, 113}),\n",
1559 " frozenset({59, 61, 83, 89, 107, 113}),\n",
1560 " frozenset({53, 67, 71, 101, 107, 113}),\n",
1561 " frozenset({61, 67, 71, 97, 107, 109}),\n",
1562 " frozenset({59, 67, 79, 97, 103, 107}),\n",
1563 " frozenset({3, 83, 101, 103, 109, 113}),\n",
1564 " frozenset({23, 79, 89, 101, 107, 113}),\n",
1565 " frozenset({31, 79, 83, 103, 107, 109}),\n",
1566 " frozenset({61, 67, 83, 97, 101, 103}),\n",
1567 " frozenset({53, 61, 73, 103, 109, 113}),\n",
1568 " frozenset({7, 83, 97, 103, 109, 113}),\n",
1569 " frozenset({13, 79, 101, 103, 107, 109}),\n",
1570 " frozenset({29, 83, 89, 97, 101, 113}),\n",
1571 " frozenset({31, 71, 89, 101, 107, 113}),\n",
1572 " frozenset({19, 79, 97, 101, 103, 113}),\n",
1573 " frozenset({61, 67, 73, 101, 103, 107}),\n",
1574 " frozenset({31, 67, 97, 101, 107, 109}),\n",
1575 " frozenset({41, 71, 83, 97, 107, 113}),\n",
1576 " frozenset({19, 67, 101, 103, 109, 113}),\n",
1577 " frozenset({43, 61, 89, 97, 109, 113}),\n",
1578 " frozenset({53, 61, 79, 97, 109, 113}),\n",
1579 " frozenset({37, 61, 97, 101, 107, 109}),\n",
1580 " frozenset({31, 73, 97, 101, 103, 107}),\n",
1581 " frozenset({29, 73, 97, 101, 103, 109}),\n",
1582 " frozenset({31, 61, 97, 103, 107, 113}),\n",
1583 " frozenset({61, 67, 79, 97, 101, 107}),\n",
1584 " frozenset({61, 73, 79, 89, 101, 109}),\n",
1585 " frozenset({67, 71, 73, 89, 103, 109}),\n",
1586 " frozenset({41, 59, 89, 101, 109, 113}),\n",
1587 " frozenset({59, 67, 73, 101, 103, 109}),\n",
1588 " frozenset({43, 67, 79, 101, 109, 113}),\n",
1589 " frozenset({67, 73, 79, 89, 97, 107}),\n",
1590 " frozenset({43, 79, 83, 97, 103, 107}),\n",
1591 " frozenset({59, 61, 73, 103, 107, 109}),\n",
1592 " frozenset({43, 61, 97, 101, 103, 107}),\n",
1593 " frozenset({61, 71, 79, 89, 103, 109}),\n",
1594 " frozenset({59, 67, 73, 97, 103, 113}),\n",
1595 " frozenset({43, 61, 79, 107, 109, 113}),\n",
1596 " frozenset({59, 67, 79, 97, 101, 109}),\n",
1597 " frozenset({29, 71, 89, 103, 107, 113}),\n",
1598 " frozenset({31, 79, 89, 97, 103, 113}),\n",
1599 " frozenset({3, 89, 101, 103, 107, 109}),\n",
1600 " frozenset({19, 83, 89, 101, 107, 113}),\n",
1601 " frozenset({19, 73, 97, 101, 109, 113}),\n",
1602 " frozenset({37, 43, 103, 107, 109, 113}),\n",
1603 " frozenset({29, 71, 83, 107, 109, 113}),\n",
1604 " frozenset({37, 73, 79, 101, 109, 113}),\n",
1605 " frozenset({59, 61, 79, 97, 107, 109}),\n",
1606 " frozenset({53, 79, 83, 89, 101, 107}),\n",
1607 " frozenset({41, 59, 83, 107, 109, 113}),\n",
1608 " frozenset({31, 71, 97, 101, 103, 109}),\n",
1609 " frozenset({37, 67, 83, 103, 109, 113}),\n",
1610 " frozenset({67, 73, 83, 89, 97, 103}),\n",
1611 " frozenset({37, 79, 83, 101, 103, 109}),\n",
1612 " frozenset({29, 67, 97, 103, 107, 109}),\n",
1613 " frozenset({37, 61, 97, 101, 103, 113}),\n",
1614 " frozenset({23, 83, 89, 101, 107, 109})]"
1615 ]
1616 },
1617 "execution_count": 34,
1618 "metadata": {},
1619 "output_type": "execute_result"
1620 }
1621 ],
1622 "source": [
1623 "valid_g1s = solutions(g1_candidates, g23_candidates)\n",
1624 "valid_g1s"
1625 ]
1626 },
1627 {
1628 "cell_type": "code",
1629 "execution_count": 35,
1630 "metadata": {
1631 "collapsed": false
1632 },
1633 "outputs": [
1634 {
1635 "data": {
1636 "text/plain": [
1637 "10723906903"
1638 ]
1639 },
1640 "execution_count": 35,
1641 "metadata": {},
1642 "output_type": "execute_result"
1643 }
1644 ],
1645 "source": [
1646 "best_qe = min(prod(s) for s in valid_g1s) \n",
1647 "best_qe"
1648 ]
1649 },
1650 {
1651 "cell_type": "markdown",
1652 "metadata": {},
1653 "source": [
1654 "#Part 2"
1655 ]
1656 },
1657 {
1658 "cell_type": "code",
1659 "execution_count": 18,
1660 "metadata": {
1661 "collapsed": false
1662 },
1663 "outputs": [
1664 {
1665 "data": {
1666 "text/plain": [
1667 "384"
1668 ]
1669 },
1670 "execution_count": 18,
1671 "metadata": {},
1672 "output_type": "execute_result"
1673 }
1674 ],
1675 "source": [
1676 "group_weight2 = sum(presents) // 4\n",
1677 "group_weight2"
1678 ]
1679 },
1680 {
1681 "cell_type": "code",
1682 "execution_count": 20,
1683 "metadata": {
1684 "collapsed": false
1685 },
1686 "outputs": [
1687 {
1688 "data": {
1689 "text/plain": [
1690 "108230"
1691 ]
1692 },
1693 "execution_count": 20,
1694 "metadata": {},
1695 "output_type": "execute_result"
1696 }
1697 ],
1698 "source": [
1699 "subsets2 = subsets_with_sum(presents, group_weight2)\n",
1700 "len(subsets2)"
1701 ]
1702 },
1703 {
1704 "cell_type": "code",
1705 "execution_count": 37,
1706 "metadata": {
1707 "collapsed": false
1708 },
1709 "outputs": [
1710 {
1711 "data": {
1712 "text/plain": [
1713 "(4, 18)"
1714 ]
1715 },
1716 "execution_count": 37,
1717 "metadata": {},
1718 "output_type": "execute_result"
1719 }
1720 ],
1721 "source": [
1722 "g1_size = min(len(s) for s in subsets2)\n",
1723 "g1_candidates = [s for s in subsets2 if len(s) == g1_size]\n",
1724 "g234_candidates = [s for s in subsets2 if len(s) > g1_size]\n",
1725 "g1_size, len(g1_candidates)"
1726 ]
1727 },
1728 {
1729 "cell_type": "code",
1730 "execution_count": 38,
1731 "metadata": {
1732 "collapsed": true
1733 },
1734 "outputs": [],
1735 "source": [
1736 "def solutions2(g1s, g234s):\n",
1737 " solutions = []\n",
1738 " for g1 in g1s:\n",
1739 " vg234s = [g for g in g234s if not g1 & g]\n",
1740 " if any(g234 for g234 in itertools.combinations(vg234s, 3)\n",
1741 " if not g234[0] & g234[1]\n",
1742 " if not g234[0] & g234[2]\n",
1743 " if not g234[1] & g234[2]):\n",
1744 " solutions += [g1]\n",
1745 " return solutions"
1746 ]
1747 },
1748 {
1749 "cell_type": "code",
1750 "execution_count": 39,
1751 "metadata": {
1752 "collapsed": false
1753 },
1754 "outputs": [
1755 {
1756 "data": {
1757 "text/plain": [
1758 "[frozenset({79, 83, 109, 113}),\n",
1759 " frozenset({67, 101, 107, 109}),\n",
1760 " frozenset({79, 97, 101, 107}),\n",
1761 " frozenset({71, 101, 103, 109}),\n",
1762 " frozenset({71, 97, 107, 109}),\n",
1763 " frozenset({83, 89, 103, 109}),\n",
1764 " frozenset({61, 103, 107, 113}),\n",
1765 " frozenset({73, 89, 109, 113}),\n",
1766 " frozenset({83, 97, 101, 103}),\n",
1767 " frozenset({73, 97, 101, 113}),\n",
1768 " frozenset({67, 97, 107, 113}),\n",
1769 " frozenset({71, 97, 103, 113}),\n",
1770 " frozenset({67, 101, 103, 113}),\n",
1771 " frozenset({73, 101, 103, 107}),\n",
1772 " frozenset({59, 103, 109, 113}),\n",
1773 " frozenset({79, 89, 103, 113}),\n",
1774 " frozenset({61, 101, 109, 113}),\n",
1775 " frozenset({79, 89, 107, 109})]"
1776 ]
1777 },
1778 "execution_count": 39,
1779 "metadata": {},
1780 "output_type": "execute_result"
1781 }
1782 ],
1783 "source": [
1784 "valid_g1s = solutions2(g1_candidates, g234_candidates)\n",
1785 "valid_g1s"
1786 ]
1787 },
1788 {
1789 "cell_type": "code",
1790 "execution_count": 40,
1791 "metadata": {
1792 "collapsed": false
1793 },
1794 "outputs": [
1795 {
1796 "data": {
1797 "text/plain": [
1798 "74850409"
1799 ]
1800 },
1801 "execution_count": 40,
1802 "metadata": {},
1803 "output_type": "execute_result"
1804 }
1805 ],
1806 "source": [
1807 "best_qe = min(prod(s) for s in valid_g1s) \n",
1808 "best_qe"
1809 ]
1810 },
1811 {
1812 "cell_type": "code",
1813 "execution_count": null,
1814 "metadata": {
1815 "collapsed": true
1816 },
1817 "outputs": [],
1818 "source": []
1819 }
1820 ],
1821 "metadata": {
1822 "kernelspec": {
1823 "display_name": "Python 3",
1824 "language": "python",
1825 "name": "python3"
1826 },
1827 "language_info": {
1828 "codemirror_mode": {
1829 "name": "ipython",
1830 "version": 3
1831 },
1832 "file_extension": ".py",
1833 "mimetype": "text/x-python",
1834 "name": "python",
1835 "nbconvert_exporter": "python",
1836 "pygments_lexer": "ipython3",
1837 "version": "3.4.3"
1838 }
1839 },
1840 "nbformat": 4,
1841 "nbformat_minor": 0
1842 }