Day 24
authorNeil Smith <neil.git@njae.me.uk>
Thu, 24 Dec 2015 11:55:48 +0000 (11:55 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Thu, 24 Dec 2015 11:55:48 +0000 (11:55 +0000)
SIGNED.md
advent-of-code-24.html [new file with mode: 0644]
advent24.ipynb [new file with mode: 0644]
advent24.txt [new file with mode: 0644]

index 5b357c829391d5145501a19ebaf498a246d00a29..5aea4d3338d69bbf982913f132d4f8cce7d8cf18 100644 (file)
--- a/SIGNED.md
+++ b/SIGNED.md
@@ -3,19 +3,19 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQIcBAABCAAGBQJWem9kAAoJEJPB2e07PgbqXbEP/i+Et9fESLyxCAVENqKQ33kc
-Jy4uadsQxVzW2LJJeSwvRDVmnxldBuTC+bS72SusNGDP7OcEs75JeKmo1E6xSmJJ
-idh0u1d2hKsSlqn1WssrIipW8QjzRE/xPCNI5i0Pso3JMFDx7z1/yfGWDq9BcKk9
-4lG4utqsxe5O8OIkBcb4Fxy+nhsqUQb3WGdt+y0ODGZAqaELsSX0lkNOUhz35foR
-/ZNwvay6YHW3hk/+GO+4Bs5oqy1YDL5rDDtv6ov55dGIL/Vfel0bOcFldrcvH6KD
-oxX71Vd+3ic8GkMllYNZQIn9wYkNEF6ygFQ7UOBC3t75xS7XtaTJIRjqoaXOTD4c
-Fj1pt0nRaMac3TPT+7DG6o4TKmQqGHEpos3m6ubE9mWVldVHUKj3kBZ+P1qv4j4j
-GSCg3BKNbyU4umNtrmAWoijAX9nB6djwPg5DOy+WR01JlhhVpwUiuqmahunnYNqc
-/MljQi/aE3D4vrb+nrViw1JItuHrcjjSritVkttsukNxZ23z1L8rQ4DCmBjav1H6
-tKKSgxQcTncCGRZlAB5e0KIa2dkUvn0Itt3BBGV+ASWULYRaK9Kn3edt627pbZbo
-AqVytWEI+yEHP20w9Gx8DRILu0ceXLI8yq2/6PkjNgk4/FTmVSRVIeH6zecKRlq2
-GLqISlGsKEU+5IwHAUjK
-=AHmD
+iQIcBAABCAAGBQJWe91LAAoJEJPB2e07PgbqODAQAJ/H9uBDWYgfUkGdnL2i4hqg
+tUCjNZAsw+VaHN4RFr0x9CGTmI2lf7MRrEy+/FwLamJIx3LVmrWrEG5xouzkIO7p
+0Dq1M3xZgJBEzh+PW2J+X3HllLMTe/y9QnzrJFGff9/xzlGRxZ7DKwyvzHhAMl5u
+00AJoWAwQkxlvKOXZiES6ROocXLx1GonrG5j76SC6B2tf4NQVlvymR8ivID4dIms
+R3khvYShuO24naJaKyjdnR4aTJCfE1zEJ+uPJNsf4GIf1RGRlyU9b+vSmcsblJnO
+vmpY5X76KhiYsV9FOfMkUq19q6kooEmswNIiUcXhzWm+BRMgtCfWk/8U64Dxfixc
+CS8QSaOGuJAxQl4VPZU9Z5t8piQDbnQlGxiJ+8t+PgRqDWS9A03UlITKMum8njyw
+dsq9z/eNFQ8+kSVb9PegnhT6bwCCSxQFOZp65aWekXPe1nwCydvyvyV38/4eyHwq
+a8z/DJsco5AFJT+pDn3Qe4WH/jspI23gx25BtNysM2l9Np0x/WK+ALC/n/AFRq6A
+c7XE2Oo8+OSU8g4TH5cbmVYxg11dsS5UlERtxMA6R01riYKIHxIcnyPzxXUlyuhw
+GN7k/GeR3OHpNhauD4HOfinSE+UJ9qVhwUTDtLlMs0f+fnA+T5ey+EI/dDr3BM1L
+a9ETHzNPBsZfcFqmAm8D
+=0oJU
 -----END PGP SIGNATURE-----
 
 ```
@@ -57,6 +57,7 @@ size    exec  file                        contents
 7780            advent-of-code-21.html    877675e47121bd4812ab461fd7cd6124c397669a5e6f35c3f19b023728976970
 10190           advent-of-code-22.html    cb57ad829bd31e59807f3f0ecc95c603eb85b2d9f9e5cbf9432e80283b689298
 6910            advent-of-code-23.html    fff58431db66635a7dc9b537f3d0d87a10ac9b20acd6fcb9cf5f8c99e6f40f39
+8408            advent-of-code-24.html    05fd8b977adf711d5911768855e79f875eb767e47dfc0656882fb49d2b3d8960
 109395          advent-of-code.ipynb      7292eeb9a8019f6931037c70105ab96bf691074dbe963736b6429cb4d4373f51
 25607           advent01.ipynb            c33ad39a77803a6870dd74998da98e3bb9c2c2db37c34167b330a01d663717e7
 7001            advent01.txt              79312922877bdedd09ce0886a42b3d7f7ed092e2218579fb7d6ac1cb38cedebe
@@ -100,6 +101,8 @@ size    exec  file                        contents
 25431           advent22.ipynb            7eb725b13c6fc2bdadb19307330615761c297ec7bb3433cd9e3dd1da41dc940e
 4882            advent23.ipynb            fc19cc164aa4d5ddd0a8cbe930f09bd893612dae5b1a3b73b4579db9e2d41fe0
 298             advent23.txt              780557c20cbab27946114d4cf04359045dd76b6bfdb28b5bde2e1ceb2c520173
+78473           advent24.ipynb            3c6e8498ce5b987ee45708979dbcfb77a255d6064a150e9a8650ed903c67f324
+86              advent24.txt              341dd3c96143cb589467239c9a9812c6f62406c33a359247049613641b890ff6
 ```
 
 #### Ignore
diff --git a/advent-of-code-24.html b/advent-of-code-24.html
new file mode 100644 (file)
index 0000000..cfd27a4
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="en-us">
+<head>
+<meta charset="utf-8"/>
+<title>Day 24 - Advent of Code</title>
+<!--[if lt IE 9]><script src="/static/html5.js"></script><![endif]-->
+<link href='//fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
+<link rel="stylesheet" type="text/css" href="/static/style.css?3"/>
+<link rel="shortcut icon" href="/favicon.ico?2"/>
+</head><!--
+
+
+
+
+Oh, hello!  Funny seeing you here.
+
+I appreciate your enthusiasm, but you aren't going to find much down here.
+There certainly aren't clues to any of the puzzles.  You do risk spoiling a few
+surprises for yourself, though.  Best to play the normal way and discover
+everything as it was intended, I think.  The best surprises don't even appear
+in the source until you unlock them for real.
+
+Please be careful with automated requests; I'm not Google, and I can only take
+so much traffic.  Please be considerate so that everyone gets to play.
+
+If you're curious about how Advent of Code works, it's running on some custom
+Perl code. Other than a few integrations (auth, analytics, ads, social media),
+I built the whole thing myself, including the design, animations, prose, and
+all of the puzzles.
+
+The puzzles probably took the longest; the easiest ones were around 45 minutes
+each, but the harder ones took 2-3 hours, some even longer than that. A lot of
+effort went into building this thing - I hope you're enjoying playing it as
+much as I enjoyed making it for you!
+
+If you'd like to hang out, I'm @ericwastl on Twitter.
+
+- Eric Wastl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-->
+<body>
+<header><h1><a href="/">Advent of Code</a></h1><div class="user">Neil Smith <span class="star-count">48*</span></div><nav><ul><li><a href="/about">[About]</a></li><li><a href="/stats">[Stats]</a></li><li><a href="/leaderboard">[Leaderboard]</a></li><li><a href="/settings">[Settings]</a></li><li><a href="/auth/logout">[Log out]</a></li></ul></nav></header>
+
+<div id="ad">
+<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+<!-- Advent of Code Wide Skyscraper -->
+<ins class="adsbygoogle"
+     style="display:inline-block;width:160px;height:600px"
+     data-ad-client="ca-pub-9420604735624631"
+     data-ad-slot="8014013294"></ins>
+<script>
+(adsbygoogle = window.adsbygoogle || []).push({});
+</script>
+</div><!--/ad-->
+
+<main>
+<article class="day-desc"><h2>--- Day 24: It Hangs in the Balance ---</h2><p>It's Christmas Eve, and Santa is loading up the sleigh for this year's deliveries.  However, there's one small problem: he can't get the sleigh to balance.  If it isn't balanced, he can't defy physics, and nobody gets presents this year.</p>
+<p>No pressure.</p>
+<p>Santa has provided you a list of the weights of every package he needs to fit on the sleigh.  The packages need to be split into <em>three groups of exactly the same weight</em>, and every package has to fit.  The first group goes in the passenger compartment of the sleigh, and the second and third go in containers on either side.  Only when all three groups weigh exactly the same amount will the sleigh be able to fly.  Defying physics has rules, you know!</p>
+<p>Of course, that's not the only problem.  The first group - the one going in the passenger compartment - needs <em>as few packages as possible</em> so that Santa has some legroom left over.  It doesn't matter how many packages are in either of the other two groups, so long as all of the groups weigh the same.</p>
+<p>Furthermore, Santa tells you, if there are multiple ways to arrange the packages such that the fewest possible are in the first group, you need to choose the way where the first group has <em>the smallest quantum entanglement</em> to reduce the chance of any <span title="Santa does not elaborate on what he means by this, but the cringe he makes indicates that it wouldn't be pretty.">"complications"</span>.  The quantum entanglement of a group of packages is the <a href="https://en.wikipedia.org/wiki/Product_%28mathematics%29">product</a> of their weights, that is, the value you get when you multiply their weights together.  Only consider quantum entanglement if the first group has the fewest possible number of packages in it and all groups weigh the same amount.</p>
+<p>For example, suppose you have ten packages with weights <code>1</code> through <code>5</code> and <code>7</code> through <code>11</code>.  For this situation, the unique first groups, their quantum entanglements, and a way to divide the remaining packages are as follows:</p>
+<pre><code>Group 1;             Group 2; Group 3
+11 9       (QE= 99); 10 8 2;  7 5 4 3 1
+10 9 1     (QE= 90); 11 7 2;  8 5 4 3
+10 8 2     (QE=160); 11 9;    7 5 4 3 1
+10 7 3     (QE=210); 11 9;    8 5 4 2 1
+10 5 4 1   (QE=200); 11 9;    8 7 3 2
+10 5 3 2   (QE=300); 11 9;    8 7 4 1
+10 4 3 2 1 (QE=240); 11 9;    8 7 5
+9 8 3      (QE=216); 11 7 2;  10 5 4 1
+9 7 4      (QE=252); 11 8 1;  10 5 3 2
+9 5 4 2    (QE=360); 11 8 1;  10 7 3
+8 7 5      (QE=280); 11 9;    10 4 3 2 1
+8 5 4 3    (QE=480); 11 9;    10 7 2 1
+7 5 4 3 1  (QE=420); 11 9;    10 8 2
+</code></pre>
+<p>Of these, although <code>10 9 1</code> has the smallest quantum entanglement (<code>90</code>), the configuration with only two packages, <code>11 9</code>, in the passenger compartment gives Santa the most legroom and wins.  In this situation, the quantum entanglement for the ideal configuration is therefore <code>99</code>.  Had there been two configurations with only two packages in the first group, the one with the smaller quantum entanglement would be chosen.</p>
+<p>What is the <em>quantum entanglement</em> of the first group of packages in the ideal configuration?</p>
+</article>
+<p>Your puzzle answer was <code>10723906903</code>.</p><article class="day-desc"><h2>--- Part Two ---</h2><p>That's weird... the sleigh still isn't balancing.</p>
+<p>"Ho ho ho", Santa muses to himself. "I forgot the trunk".</p>
+<p>Balance the sleigh again, but this time, separate the packages into <em>four groups</em> instead of three.  The other constraints still apply.</p>
+<p>Given the example packages above, this would be the new unique first groups, their quantum entanglements, and one way to divide the remaining packages:</p>
+<pre><code>
+11 4    (QE=44); 10 5;   9 3 2 1; 8 7
+10 5    (QE=50); 11 4;   9 3 2 1; 8 7
+9 5 1   (QE=45); 11 4;   10 3 2;  8 7
+9 4 2   (QE=72); 11 3 1; 10 5;    8 7
+9 3 2 1 (QE=54); 11 4;   10 5;    8 7
+8 7     (QE=56); 11 4;   10 5;    9 3 2 1
+</code></pre>
+<p>Of these, there are three arrangements that put the minimum (two) number of packages in the first group: <code>11 4</code>, <code>10 5</code>, and <code>8 7</code>.  Of these, <code>11 4</code> has the lowest quantum entanglement, and so it is selected.</p>
+<p>Now, what is the <em>quantum entanglement</em> of the first group of packages in the ideal configuration?</p>
+</article>
+<p>Your puzzle answer was <code>74850409</code>.</p><p class="day-success">Both parts of this puzzle are complete! They provide two gold stars: **</p>
+<p>At this point, you should <a href="/">return to your advent calendar</a> and try another puzzle.</p>
+<p>If you still want to see it, you can <a href="/day/24/input" target="_blank">get your puzzle input</a>.</p>
+<p>You can also <span class="share">[Share<span class="share-content">on
+  <a href="https://twitter.com/intent/tweet?text=I%27ve+completed+%22It+Hangs+in+the+Balance%22+%2D+Day+24+%2D+Advent+of+Code&amp;url=http%3A%2F%2Fadventofcode%2Ecom%2Fday%2F24&amp;related=ericwastl&amp;hashtags=AdventOfCode" target="_blank">Twitter</a>
+  <a href="https://plus.google.com/share?url=http%3A%2F%2Fadventofcode%2Ecom%2Fday%2F24" target="_blank">Google+</a>
+  <a href="http://www.reddit.com/submit?url=http%3A%2F%2Fadventofcode%2Ecom%2Fday%2F24&amp;title=I%27ve+completed+%22It+Hangs+in+the+Balance%22+%2D+Day+24+%2D+Advent+of+Code" target="_blank">Reddit</a
+></span>]</span>
+ this puzzle.</p>
+</main>
+
+<!-- ga -->
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-69522494-1', 'auto');
+ga('send', 'pageview');
+</script>
+<!-- /ga -->
+</body>
+</html>
diff --git a/advent24.ipynb b/advent24.ipynb
new file mode 100644 (file)
index 0000000..43991ce
--- /dev/null
@@ -0,0 +1,1842 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import itertools\n",
+    "import functools\n",
+    "import operator\n",
+    "\n",
+    "def prod(iterable):\n",
+    "    return functools.reduce(operator.mul, iterable, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[1,\n",
+       " 2,\n",
+       " 3,\n",
+       " 5,\n",
+       " 7,\n",
+       " 13,\n",
+       " 17,\n",
+       " 19,\n",
+       " 23,\n",
+       " 29,\n",
+       " 31,\n",
+       " 37,\n",
+       " 41,\n",
+       " 43,\n",
+       " 53,\n",
+       " 59,\n",
+       " 61,\n",
+       " 67,\n",
+       " 71,\n",
+       " 73,\n",
+       " 79,\n",
+       " 83,\n",
+       " 89,\n",
+       " 97,\n",
+       " 101,\n",
+       " 103,\n",
+       " 107,\n",
+       " 109,\n",
+       " 113]"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "presents = [int(p) for p in open('advent24.txt').readlines()]\n",
+    "presents"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "# presents = [1,2,3,4,5,7,8,9,10,11]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "512"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "group_weight = sum(presents) // 3\n",
+    "group_weight"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "#def valid(g1, g2, g3):\n",
+    "#    return len(g1) < len(g2) and len(g1) < len(g3) and \\\n",
+    "#        not (g1 & g2) and not (g1 & g3) and not (g2 & g3)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[([9, 11], [1, 2, 3, 4, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 3, 4, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 3, 4, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 3, 4, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 3, 4, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 3, 4, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 3, 10, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 4, 3, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 4, 5, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 4, 8, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 4, 10, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 5, 4, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 5, 8, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 2, 7, 10], [8, 5, 4, 3]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 8, 4, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 2, 8, 5, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 10, 3, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 2, 10, 4, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 2, 10, 7], [8, 5, 4, 3]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 2, 4, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 2, 10, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 4, 2, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 4, 5, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 4, 7, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 4, 10, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 5, 4, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 5, 7, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 7, 4, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 3, 7, 5, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 10, 2, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 3, 10, 4, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 2, 3, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 2, 5, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 2, 8, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 2, 10, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 3, 2, 10], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 3, 5, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 3, 7, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 3, 10, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 5, 2, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 5, 3, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 5, 7, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 5, 8, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 4, 5, 10], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 7, 3, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 4, 7, 5, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 4, 7, 8], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 8, 2, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 4, 8, 5, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 4, 8, 7], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 10, 2, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 4, 10, 3, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 4, 10, 5], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 2, 4, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 2, 8, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 3, 4, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 3, 7, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 4, 2, 8], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 4, 3, 7], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 4, 7, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 4, 8, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 5, 4, 10], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 7, 3, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 5, 7, 4, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 8, 2, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 5, 8, 4, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 5, 10, 4], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 7, 2, 10], [8, 5, 4, 3]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 3, 4, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 3, 5, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 4, 3, 5], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 4, 5, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 7, 4, 8], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 5, 3, 4], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [2, 8, 10]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [2, 10, 8]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [8, 2, 10]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [8, 10, 2]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [10, 2, 8]),\n",
+       " ([9, 11], [1, 7, 5, 4, 3], [10, 8, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 7, 8, 4], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 7, 10, 2], [8, 5, 4, 3]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 2, 4, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 2, 5, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 4, 2, 5], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 4, 5, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 8, 4, 7], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 5, 2, 4], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [3, 7, 10]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [3, 10, 7]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [7, 3, 10]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [7, 10, 3]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [10, 3, 7]),\n",
+       " ([9, 11], [1, 8, 5, 4, 2], [10, 7, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 3, 5, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 3, 10, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 5, 3, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 5, 10, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 10, 3, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [2, 10, 5, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 2, 5, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 2, 10, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 5, 2, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 5, 10, 2]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 10, 2, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [3, 10, 5, 2]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 2, 3, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 2, 10, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 3, 2, 10]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 3, 10, 2]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 10, 2, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [5, 10, 3, 2]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 2, 3, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 2, 5, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 3, 2, 5]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 3, 5, 2]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 5, 2, 3]),\n",
+       " ([9, 11], [1, 8, 7, 4], [10, 5, 3, 2]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 2, 3, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 2, 4, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 10, 2, 7], [8, 5, 4, 3]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 3, 2, 4], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 3, 4, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 4, 2, 3], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [5, 7, 8]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [5, 8, 7]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [7, 5, 8]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [7, 8, 5]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [8, 5, 7]),\n",
+       " ([9, 11], [1, 10, 4, 3, 2], [8, 7, 5]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 10, 4, 5], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 3, 7, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 3, 8, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 7, 3, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 7, 8, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 8, 3, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [2, 8, 7, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 2, 7, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 2, 8, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 7, 2, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 7, 8, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 8, 2, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [3, 8, 7, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 2, 3, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 2, 8, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 3, 2, 8]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 3, 8, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 8, 2, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [7, 8, 3, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 2, 3, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 2, 7, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 3, 2, 7]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 3, 7, 2]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 7, 2, 3]),\n",
+       " ([9, 11], [1, 10, 5, 4], [8, 7, 3, 2]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 4, 5, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 4, 8, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 5, 4, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 5, 8, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 8, 4, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [3, 8, 5, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 3, 5, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 3, 8, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 5, 3, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 5, 8, 3]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 8, 3, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [4, 8, 5, 3]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 3, 4, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 3, 8, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 4, 3, 8]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 4, 8, 3]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 8, 3, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [5, 8, 4, 3]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 3, 4, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 3, 5, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 4, 3, 5]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 4, 5, 3]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 5, 3, 4]),\n",
+       " ([9, 11], [1, 10, 7, 2], [8, 5, 4, 3]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 3, 4, 10], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 3, 10, 4], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 4, 3, 10], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 4, 5, 8], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 4, 8, 5], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 4, 10, 3], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 5, 4, 8], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 5, 8, 4], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 4, 5, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 4, 8, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 5, 4, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 5, 8, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 8, 4, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [3, 8, 5, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 3, 5, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 3, 8, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 5, 3, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 5, 8, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 8, 3, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [4, 8, 5, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 3, 4, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 3, 8, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 4, 3, 8]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 4, 8, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 8, 3, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [5, 8, 4, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 3, 4, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 3, 5, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 4, 3, 5]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 4, 5, 3]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 5, 3, 4]),\n",
+       " ([9, 11], [2, 1, 7, 10], [8, 5, 4, 3]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 8, 4, 5], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [3, 7, 10]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [3, 10, 7]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [7, 3, 10]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [7, 10, 3]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [10, 3, 7]),\n",
+       " ([9, 11], [2, 1, 8, 5, 4], [10, 7, 3]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 10, 3, 4], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [5, 7, 8]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [5, 8, 7]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [7, 5, 8]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [7, 8, 5]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [8, 5, 7]),\n",
+       " ([9, 11], [2, 1, 10, 4, 3], [8, 7, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 4, 5, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 4, 8, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 5, 4, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 5, 8, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 8, 4, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [3, 8, 5, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 3, 5, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 3, 8, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 5, 3, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 5, 8, 3]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 8, 3, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [4, 8, 5, 3]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 3, 4, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 3, 8, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 4, 3, 8]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 4, 8, 3]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 8, 3, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [5, 8, 4, 3]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 3, 4, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 3, 5, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 4, 3, 5]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 4, 5, 3]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 5, 3, 4]),\n",
+       " ([9, 11], [2, 1, 10, 7], [8, 5, 4, 3]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [5, 7, 8]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [5, 8, 7]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [7, 5, 8]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [7, 8, 5]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [8, 5, 7]),\n",
+       " ([9, 11], [2, 3, 1, 4, 10], [8, 7, 5]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [5, 7, 8]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [5, 8, 7]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [7, 5, 8]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [7, 8, 5]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [8, 5, 7]),\n",
+       " ([9, 11], [2, 3, 1, 10, 4], [8, 7, 5]),\n",
+       " ([9, 11], [2, 3, 4, 1, 10], [5, 7, 8]),\n",
+       " ([9, 11], [2, 3, 4, 1, 10], [5, 8, 7]),\n",
+       " ([9, 11], [2, 3, 4, 1, 10], [7, 5, 8]),\n",
+       " ([9, 11], [2, 3, 4, 1, 10], [7, 8, 5]),\n",
+       " ...]"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#valids = []\n",
+    "#for p in itertools.permutations(presents):\n",
+    "#    totals = itertools.accumulate(p)\n",
+    "#    pairs = zip(p, totals)\n",
+    "#    g1, g2, g3 = split(pairs)\n",
+    "#    if valid(g1, g2, g3):\n",
+    "#        valids += [(g1, g2, g3)]\n",
+    "#valids"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "def subsets_with_sum(items, dsum):\n",
+    "    subsets = set()\n",
+    "    for i in range(len(items)):\n",
+    "        subsets |= set(frozenset(s) for s in itertools.combinations(items, i)\n",
+    "                       if sum(s) == dsum)\n",
+    "    return subsets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[(1, 2, 17), (2, 5, 13)]"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(filter(lambda s: sum(s) == 20, (s for s in itertools.combinations(presents, 3))))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "429102"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "subsets = subsets_with_sum(presents, group_weight)\n",
+    "len(subsets)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "6"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "min(len(s) for s in subsets)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "g1_size = min(len(s) for s in subsets)\n",
+    "g1_candidates = [s for s in subsets if len(s) == 6]\n",
+    "g23_candidates = [s for s in subsets if len(s) > 6]\n",
+    "len(subsets) == (len(g1_candidates) + len(g23_candidates))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "248"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(g1_candidates)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[(frozenset({43, 79, 89, 97, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
+       "   frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}))),\n",
+       " (frozenset({43, 79, 89, 97, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
+       "   frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
+       " (frozenset({43, 79, 89, 97, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}),\n",
+       "   frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
+       " (frozenset({67, 73, 79, 89, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
+       "   frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}))),\n",
+       " (frozenset({67, 73, 79, 89, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 43, 61, 71, 89, 107, 109}),\n",
+       "   frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89}))),\n",
+       " (frozenset({67, 73, 79, 89, 101, 103}),\n",
+       "  (frozenset({2, 7, 23, 53, 61, 71, 79, 107, 109}),\n",
+       "   frozenset({1, 5, 13, 19, 29, 31, 43, 59, 67, 73, 83, 89})))]"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(itertools.product(g1_candidates[:2], \n",
+    "                       itertools.combinations(g23_candidates[:3], 2)))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "def solutions(g1s, g23s):\n",
+    "    solutions = []\n",
+    "    for g1 in g1s:\n",
+    "        vg23s = [g for g in g23s if not g1 & g]\n",
+    "        if any(g23 for g23 in itertools.combinations(vg23s, 2)\n",
+    "               if not g23[0] & g23[1]):\n",
+    "            solutions += [g1]\n",
+    "    return solutions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "23901"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "vg23s = [g for g in g23_candidates if not g1_candidates[0] & g]\n",
+    "len(vg23s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[frozenset({43, 79, 89, 97, 101, 103}),\n",
+       " frozenset({67, 73, 79, 89, 101, 103}),\n",
+       " frozenset({17, 73, 97, 103, 109, 113}),\n",
+       " frozenset({43, 67, 83, 103, 107, 109}),\n",
+       " frozenset({19, 71, 97, 103, 109, 113}),\n",
+       " frozenset({19, 61, 103, 107, 109, 113}),\n",
+       " frozenset({59, 61, 73, 97, 109, 113}),\n",
+       " frozenset({53, 59, 83, 97, 107, 113}),\n",
+       " frozenset({23, 83, 89, 97, 107, 113}),\n",
+       " frozenset({53, 73, 83, 89, 101, 113}),\n",
+       " frozenset({41, 59, 89, 103, 107, 113}),\n",
+       " frozenset({41, 53, 89, 107, 109, 113}),\n",
+       " frozenset({41, 61, 97, 101, 103, 109}),\n",
+       " frozenset({61, 73, 79, 89, 97, 113}),\n",
+       " frozenset({13, 89, 97, 101, 103, 109}),\n",
+       " frozenset({53, 67, 73, 97, 109, 113}),\n",
+       " frozenset({19, 73, 97, 103, 107, 113}),\n",
+       " frozenset({43, 73, 83, 97, 107, 109}),\n",
+       " frozenset({5, 83, 101, 103, 107, 113}),\n",
+       " frozenset({61, 79, 83, 89, 97, 103}),\n",
+       " frozenset({43, 59, 89, 101, 107, 113}),\n",
+       " frozenset({53, 59, 79, 101, 107, 113}),\n",
+       " frozenset({23, 73, 97, 103, 107, 109}),\n",
+       " frozenset({37, 61, 89, 103, 109, 113}),\n",
+       " frozenset({37, 53, 97, 103, 109, 113}),\n",
+       " frozenset({41, 79, 83, 97, 103, 109}),\n",
+       " frozenset({53, 61, 89, 97, 103, 109}),\n",
+       " frozenset({67, 71, 73, 97, 101, 103}),\n",
+       " frozenset({43, 73, 83, 97, 103, 113}),\n",
+       " frozenset({41, 61, 89, 101, 107, 113}),\n",
+       " frozenset({59, 61, 71, 101, 107, 113}),\n",
+       " frozenset({13, 73, 97, 107, 109, 113}),\n",
+       " frozenset({37, 73, 89, 97, 107, 109}),\n",
+       " frozenset({5, 89, 97, 101, 107, 113}),\n",
+       " frozenset({43, 73, 79, 97, 107, 113}),\n",
+       " frozenset({29, 79, 83, 101, 107, 113}),\n",
+       " frozenset({43, 67, 89, 101, 103, 109}),\n",
+       " frozenset({53, 67, 79, 101, 103, 109}),\n",
+       " frozenset({29, 73, 89, 101, 107, 113}),\n",
+       " frozenset({53, 59, 89, 101, 103, 107}),\n",
+       " frozenset({43, 73, 83, 101, 103, 109}),\n",
+       " frozenset({59, 71, 73, 89, 107, 113}),\n",
+       " frozenset({43, 61, 89, 103, 107, 109}),\n",
+       " frozenset({53, 61, 79, 103, 107, 109}),\n",
+       " frozenset({61, 71, 83, 89, 101, 107}),\n",
+       " frozenset({59, 73, 79, 89, 103, 109}),\n",
+       " frozenset({29, 83, 89, 101, 103, 107}),\n",
+       " frozenset({41, 73, 79, 103, 107, 109}),\n",
+       " frozenset({67, 73, 79, 83, 103, 107}),\n",
+       " frozenset({61, 67, 71, 101, 103, 109}),\n",
+       " frozenset({61, 71, 73, 97, 103, 107}),\n",
+       " frozenset({71, 73, 79, 89, 97, 103}),\n",
+       " frozenset({53, 59, 83, 101, 107, 109}),\n",
+       " frozenset({23, 79, 97, 101, 103, 109}),\n",
+       " frozenset({61, 67, 79, 89, 103, 113}),\n",
+       " frozenset({59, 71, 83, 89, 97, 113}),\n",
+       " frozenset({59, 61, 79, 97, 103, 113}),\n",
+       " frozenset({43, 67, 73, 107, 109, 113}),\n",
+       " frozenset({59, 71, 79, 89, 101, 113}),\n",
+       " frozenset({53, 71, 79, 89, 107, 113}),\n",
+       " frozenset({61, 71, 73, 97, 101, 109}),\n",
+       " frozenset({43, 71, 79, 97, 109, 113}),\n",
+       " frozenset({43, 71, 79, 103, 107, 109}),\n",
+       " frozenset({37, 67, 89, 97, 109, 113}),\n",
+       " frozenset({59, 71, 79, 83, 107, 113}),\n",
+       " frozenset({43, 73, 79, 101, 107, 109}),\n",
+       " frozenset({31, 61, 101, 103, 107, 109}),\n",
+       " frozenset({31, 73, 83, 103, 109, 113}),\n",
+       " frozenset({59, 67, 73, 97, 107, 109}),\n",
+       " frozenset({61, 73, 79, 83, 103, 113}),\n",
+       " frozenset({23, 59, 101, 107, 109, 113}),\n",
+       " frozenset({37, 73, 79, 103, 107, 113}),\n",
+       " frozenset({53, 59, 83, 101, 103, 113}),\n",
+       " frozenset({43, 53, 97, 103, 107, 109}),\n",
+       " frozenset({53, 71, 83, 89, 103, 113}),\n",
+       " frozenset({43, 71, 73, 103, 109, 113}),\n",
+       " frozenset({43, 79, 83, 97, 101, 109}),\n",
+       " frozenset({17, 71, 101, 103, 107, 113}),\n",
+       " frozenset({61, 73, 79, 89, 103, 107}),\n",
+       " frozenset({53, 59, 89, 97, 101, 113}),\n",
+       " frozenset({31, 79, 89, 97, 107, 109}),\n",
+       " frozenset({1, 89, 97, 103, 109, 113}),\n",
+       " frozenset({59, 71, 73, 97, 103, 109}),\n",
+       " frozenset({31, 83, 89, 97, 103, 109}),\n",
+       " frozenset({13, 79, 97, 101, 109, 113}),\n",
+       " frozenset({37, 79, 89, 97, 101, 109}),\n",
+       " frozenset({59, 71, 83, 89, 103, 107}),\n",
+       " frozenset({41, 67, 79, 103, 109, 113}),\n",
+       " frozenset({19, 73, 101, 103, 107, 109}),\n",
+       " frozenset({59, 61, 79, 101, 103, 109}),\n",
+       " frozenset({41, 67, 83, 101, 107, 113}),\n",
+       " frozenset({37, 67, 79, 107, 109, 113}),\n",
+       " frozenset({29, 59, 101, 103, 107, 113}),\n",
+       " frozenset({17, 83, 89, 101, 109, 113}),\n",
+       " frozenset({41, 73, 89, 97, 103, 109}),\n",
+       " frozenset({67, 71, 79, 83, 103, 109}),\n",
+       " frozenset({53, 71, 83, 97, 101, 107}),\n",
+       " frozenset({13, 73, 101, 103, 109, 113}),\n",
+       " frozenset({37, 73, 89, 101, 103, 109}),\n",
+       " frozenset({31, 73, 89, 97, 109, 113}),\n",
+       " frozenset({31, 67, 97, 101, 103, 113}),\n",
+       " frozenset({19, 67, 97, 107, 109, 113}),\n",
+       " frozenset({7, 89, 97, 103, 107, 109}),\n",
+       " frozenset({19, 79, 97, 101, 107, 109}),\n",
+       " frozenset({67, 73, 79, 83, 97, 113}),\n",
+       " frozenset({43, 61, 83, 103, 109, 113}),\n",
+       " frozenset({37, 71, 79, 103, 109, 113}),\n",
+       " frozenset({23, 71, 89, 107, 109, 113}),\n",
+       " frozenset({23, 83, 89, 101, 103, 113}),\n",
+       " frozenset({31, 79, 83, 97, 109, 113}),\n",
+       " frozenset({31, 61, 97, 101, 109, 113}),\n",
+       " frozenset({29, 71, 89, 101, 109, 113}),\n",
+       " frozenset({43, 67, 79, 103, 107, 113}),\n",
+       " frozenset({1, 79, 103, 107, 109, 113}),\n",
+       " frozenset({29, 61, 97, 103, 109, 113}),\n",
+       " frozenset({7, 73, 103, 107, 109, 113}),\n",
+       " frozenset({61, 73, 79, 83, 107, 109}),\n",
+       " frozenset({53, 67, 73, 103, 107, 109}),\n",
+       " frozenset({41, 71, 79, 101, 107, 113}),\n",
+       " frozenset({61, 67, 71, 97, 103, 113}),\n",
+       " frozenset({43, 73, 79, 101, 103, 113}),\n",
+       " frozenset({43, 73, 89, 97, 101, 109}),\n",
+       " frozenset({53, 73, 79, 97, 101, 109}),\n",
+       " frozenset({43, 67, 83, 97, 109, 113}),\n",
+       " frozenset({13, 83, 97, 103, 107, 109}),\n",
+       " frozenset({31, 73, 89, 103, 107, 109}),\n",
+       " frozenset({61, 67, 83, 89, 103, 109}),\n",
+       " frozenset({59, 71, 83, 89, 101, 109}),\n",
+       " frozenset({53, 71, 83, 89, 107, 109}),\n",
+       " frozenset({3, 79, 101, 107, 109, 113}),\n",
+       " frozenset({61, 71, 79, 97, 101, 103}),\n",
+       " frozenset({59, 73, 79, 97, 101, 103}),\n",
+       " frozenset({7, 79, 97, 107, 109, 113}),\n",
+       " frozenset({61, 67, 79, 89, 107, 109}),\n",
+       " frozenset({43, 67, 89, 97, 107, 109}),\n",
+       " frozenset({53, 67, 79, 97, 107, 109}),\n",
+       " frozenset({61, 67, 73, 97, 101, 113}),\n",
+       " frozenset({37, 73, 83, 103, 107, 109}),\n",
+       " frozenset({43, 73, 89, 97, 103, 107}),\n",
+       " frozenset({53, 73, 79, 97, 103, 107}),\n",
+       " frozenset({37, 73, 83, 97, 109, 113}),\n",
+       " frozenset({37, 67, 97, 101, 103, 107}),\n",
+       " frozenset({13, 79, 97, 103, 107, 113}),\n",
+       " frozenset({37, 79, 89, 97, 103, 107}),\n",
+       " frozenset({31, 67, 89, 103, 109, 113}),\n",
+       " frozenset({53, 67, 83, 97, 103, 109}),\n",
+       " frozenset({41, 71, 89, 97, 101, 113}),\n",
+       " frozenset({67, 71, 73, 79, 109, 113}),\n",
+       " frozenset({37, 79, 83, 97, 107, 109}),\n",
+       " frozenset({13, 67, 103, 107, 109, 113}),\n",
+       " frozenset({37, 67, 89, 103, 107, 109}),\n",
+       " frozenset({3, 83, 97, 107, 109, 113}),\n",
+       " frozenset({67, 73, 79, 83, 101, 109}),\n",
+       " frozenset({41, 73, 79, 97, 109, 113}),\n",
+       " frozenset({37, 71, 83, 101, 107, 113}),\n",
+       " frozenset({59, 61, 67, 103, 109, 113}),\n",
+       " frozenset({37, 79, 83, 97, 103, 113}),\n",
+       " frozenset({41, 79, 83, 89, 107, 113}),\n",
+       " frozenset({41, 53, 97, 101, 107, 113}),\n",
+       " frozenset({37, 73, 89, 97, 103, 113}),\n",
+       " frozenset({23, 67, 97, 103, 109, 113}),\n",
+       " frozenset({23, 71, 97, 101, 107, 113}),\n",
+       " frozenset({3, 89, 97, 103, 107, 113}),\n",
+       " frozenset({19, 79, 89, 103, 109, 113}),\n",
+       " frozenset({37, 59, 97, 103, 107, 109}),\n",
+       " frozenset({19, 83, 97, 101, 103, 109}),\n",
+       " frozenset({61, 67, 73, 89, 109, 113}),\n",
+       " frozenset({7, 79, 101, 103, 109, 113}),\n",
+       " frozenset({17, 79, 97, 103, 107, 109}),\n",
+       " frozenset({41, 71, 89, 101, 103, 107}),\n",
+       " frozenset({31, 79, 89, 101, 103, 109}),\n",
+       " frozenset({29, 53, 101, 107, 109, 113}),\n",
+       " frozenset({61, 73, 83, 89, 97, 109}),\n",
+       " frozenset({43, 67, 89, 97, 103, 113}),\n",
+       " frozenset({53, 67, 79, 97, 103, 113}),\n",
+       " frozenset({43, 71, 89, 97, 103, 109}),\n",
+       " frozenset({53, 71, 79, 97, 103, 109}),\n",
+       " frozenset({53, 59, 71, 107, 109, 113}),\n",
+       " frozenset({67, 71, 79, 89, 97, 109}),\n",
+       " frozenset({53, 67, 83, 89, 107, 113}),\n",
+       " frozenset({59, 67, 83, 89, 101, 113}),\n",
+       " frozenset({31, 59, 97, 103, 109, 113}),\n",
+       " frozenset({59, 73, 83, 89, 101, 107}),\n",
+       " frozenset({59, 61, 83, 97, 103, 109}),\n",
+       " frozenset({41, 71, 83, 101, 107, 109}),\n",
+       " frozenset({3, 89, 97, 101, 109, 113}),\n",
+       " frozenset({31, 73, 79, 107, 109, 113}),\n",
+       " frozenset({61, 67, 79, 83, 109, 113}),\n",
+       " frozenset({17, 83, 89, 103, 107, 113}),\n",
+       " frozenset({71, 73, 79, 83, 97, 109}),\n",
+       " frozenset({43, 59, 97, 101, 103, 109}),\n",
+       " frozenset({41, 71, 83, 101, 103, 113}),\n",
+       " frozenset({59, 61, 83, 89, 107, 113}),\n",
+       " frozenset({53, 67, 71, 101, 107, 113}),\n",
+       " frozenset({61, 67, 71, 97, 107, 109}),\n",
+       " frozenset({59, 67, 79, 97, 103, 107}),\n",
+       " frozenset({3, 83, 101, 103, 109, 113}),\n",
+       " frozenset({23, 79, 89, 101, 107, 113}),\n",
+       " frozenset({31, 79, 83, 103, 107, 109}),\n",
+       " frozenset({61, 67, 83, 97, 101, 103}),\n",
+       " frozenset({53, 61, 73, 103, 109, 113}),\n",
+       " frozenset({7, 83, 97, 103, 109, 113}),\n",
+       " frozenset({13, 79, 101, 103, 107, 109}),\n",
+       " frozenset({29, 83, 89, 97, 101, 113}),\n",
+       " frozenset({31, 71, 89, 101, 107, 113}),\n",
+       " frozenset({19, 79, 97, 101, 103, 113}),\n",
+       " frozenset({61, 67, 73, 101, 103, 107}),\n",
+       " frozenset({31, 67, 97, 101, 107, 109}),\n",
+       " frozenset({41, 71, 83, 97, 107, 113}),\n",
+       " frozenset({19, 67, 101, 103, 109, 113}),\n",
+       " frozenset({43, 61, 89, 97, 109, 113}),\n",
+       " frozenset({53, 61, 79, 97, 109, 113}),\n",
+       " frozenset({37, 61, 97, 101, 107, 109}),\n",
+       " frozenset({31, 73, 97, 101, 103, 107}),\n",
+       " frozenset({29, 73, 97, 101, 103, 109}),\n",
+       " frozenset({31, 61, 97, 103, 107, 113}),\n",
+       " frozenset({61, 67, 79, 97, 101, 107}),\n",
+       " frozenset({61, 73, 79, 89, 101, 109}),\n",
+       " frozenset({67, 71, 73, 89, 103, 109}),\n",
+       " frozenset({41, 59, 89, 101, 109, 113}),\n",
+       " frozenset({59, 67, 73, 101, 103, 109}),\n",
+       " frozenset({43, 67, 79, 101, 109, 113}),\n",
+       " frozenset({67, 73, 79, 89, 97, 107}),\n",
+       " frozenset({43, 79, 83, 97, 103, 107}),\n",
+       " frozenset({59, 61, 73, 103, 107, 109}),\n",
+       " frozenset({43, 61, 97, 101, 103, 107}),\n",
+       " frozenset({61, 71, 79, 89, 103, 109}),\n",
+       " frozenset({59, 67, 73, 97, 103, 113}),\n",
+       " frozenset({43, 61, 79, 107, 109, 113}),\n",
+       " frozenset({59, 67, 79, 97, 101, 109}),\n",
+       " frozenset({29, 71, 89, 103, 107, 113}),\n",
+       " frozenset({31, 79, 89, 97, 103, 113}),\n",
+       " frozenset({3, 89, 101, 103, 107, 109}),\n",
+       " frozenset({19, 83, 89, 101, 107, 113}),\n",
+       " frozenset({19, 73, 97, 101, 109, 113}),\n",
+       " frozenset({37, 43, 103, 107, 109, 113}),\n",
+       " frozenset({29, 71, 83, 107, 109, 113}),\n",
+       " frozenset({37, 73, 79, 101, 109, 113}),\n",
+       " frozenset({59, 61, 79, 97, 107, 109}),\n",
+       " frozenset({53, 79, 83, 89, 101, 107}),\n",
+       " frozenset({41, 59, 83, 107, 109, 113}),\n",
+       " frozenset({31, 71, 97, 101, 103, 109}),\n",
+       " frozenset({37, 67, 83, 103, 109, 113}),\n",
+       " frozenset({67, 73, 83, 89, 97, 103}),\n",
+       " frozenset({37, 79, 83, 101, 103, 109}),\n",
+       " frozenset({29, 67, 97, 103, 107, 109}),\n",
+       " frozenset({37, 61, 97, 101, 103, 113}),\n",
+       " frozenset({23, 83, 89, 101, 107, 109})]"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "valid_g1s = solutions(g1_candidates, g23_candidates)\n",
+    "valid_g1s"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "10723906903"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "best_qe = min(prod(s) for s in valid_g1s)   \n",
+    "best_qe"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#Part 2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "384"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "group_weight2 = sum(presents) // 4\n",
+    "group_weight2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "108230"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "subsets2 = subsets_with_sum(presents, group_weight2)\n",
+    "len(subsets2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(4, 18)"
+      ]
+     },
+     "execution_count": 37,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "g1_size = min(len(s) for s in subsets2)\n",
+    "g1_candidates = [s for s in subsets2 if len(s) == g1_size]\n",
+    "g234_candidates = [s for s in subsets2 if len(s) > g1_size]\n",
+    "g1_size, len(g1_candidates)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": [
+    "def solutions2(g1s, g234s):\n",
+    "    solutions = []\n",
+    "    for g1 in g1s:\n",
+    "        vg234s = [g for g in g234s if not g1 & g]\n",
+    "        if any(g234 for g234 in itertools.combinations(vg234s, 3)\n",
+    "               if not g234[0] & g234[1]\n",
+    "               if not g234[0] & g234[2]\n",
+    "               if not g234[1] & g234[2]):\n",
+    "            solutions += [g1]\n",
+    "    return solutions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[frozenset({79, 83, 109, 113}),\n",
+       " frozenset({67, 101, 107, 109}),\n",
+       " frozenset({79, 97, 101, 107}),\n",
+       " frozenset({71, 101, 103, 109}),\n",
+       " frozenset({71, 97, 107, 109}),\n",
+       " frozenset({83, 89, 103, 109}),\n",
+       " frozenset({61, 103, 107, 113}),\n",
+       " frozenset({73, 89, 109, 113}),\n",
+       " frozenset({83, 97, 101, 103}),\n",
+       " frozenset({73, 97, 101, 113}),\n",
+       " frozenset({67, 97, 107, 113}),\n",
+       " frozenset({71, 97, 103, 113}),\n",
+       " frozenset({67, 101, 103, 113}),\n",
+       " frozenset({73, 101, 103, 107}),\n",
+       " frozenset({59, 103, 109, 113}),\n",
+       " frozenset({79, 89, 103, 113}),\n",
+       " frozenset({61, 101, 109, 113}),\n",
+       " frozenset({79, 89, 107, 109})]"
+      ]
+     },
+     "execution_count": 39,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "valid_g1s = solutions2(g1_candidates, g234_candidates)\n",
+    "valid_g1s"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "74850409"
+      ]
+     },
+     "execution_count": 40,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "best_qe = min(prod(s) for s in valid_g1s)   \n",
+    "best_qe"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": true
+   },
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.4.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/advent24.txt b/advent24.txt
new file mode 100644 (file)
index 0000000..b2b1dff
--- /dev/null
@@ -0,0 +1,29 @@
+1
+2
+3
+5
+7
+13
+17
+19
+23
+29
+31
+37
+41
+43
+53
+59
+61
+67
+71
+73
+79
+83
+89
+97
+101
+103
+107
+109
+113
\ No newline at end of file