X-Git-Url: https://git.njae.me.uk/?p=advent-of-code-15.git;a=blobdiff_plain;f=advent24.ipynb;fp=advent24.ipynb;h=43991ce0a26a7a68527e4b64e352634f9c4331fd;hp=0000000000000000000000000000000000000000;hb=5d636a6a977e1667611a2d4874e08212ec3b1af6;hpb=8e419e5f33129fae84965a39e6f3f4338e15f6d9 diff --git a/advent24.ipynb b/advent24.ipynb new file mode 100644 index 0000000..43991ce --- /dev/null +++ b/advent24.ipynb @@ -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 +}