<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://michaelnielsen.org/polymath/index.php?action=history&amp;feed=atom&amp;title=Second_lookup_table_C_code</id>
	<title>Second lookup table C code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://michaelnielsen.org/polymath/index.php?action=history&amp;feed=atom&amp;title=Second_lookup_table_C_code"/>
	<link rel="alternate" type="text/html" href="https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;action=history"/>
	<updated>2026-04-07T15:21:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1667&amp;oldid=prev</id>
		<title>Teorth at 01:33, 13 June 2009</title>
		<link rel="alternate" type="text/html" href="https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1667&amp;oldid=prev"/>
		<updated>2009-06-13T01:33:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:33, 12 June 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l871&quot;&gt;Line 871:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 871:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define MAX_PARETO &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;26 &lt;/del&gt;  // any forbidden set can generate at most &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;26 &lt;/del&gt;Pareto-optimals&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define MAX_PARETO &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;27 &lt;/ins&gt;  // any forbidden set can generate at most &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;27 &lt;/ins&gt;Pareto-optimals&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;FILE * newtable;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;FILE * newtable;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Teorth</name></author>
	</entry>
	<entry>
		<id>https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1666&amp;oldid=prev</id>
		<title>Teorth at 01:28, 13 June 2009</title>
		<link rel="alternate" type="text/html" href="https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1666&amp;oldid=prev"/>
		<updated>2009-06-13T01:28:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:28, 12 June 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l958&quot;&gt;Line 958:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 958:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   // do the easy cases with only one non-zero&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   // do the easy cases with only one non-zero&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4&lt;/del&gt;-s[0]][0][0][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8&lt;/ins&gt;-s[0]][0][0][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[0][12-s[1]][0][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[0][12-s[1]][0][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[0][0][6-s[2]][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   feasible[0][0][6-s[2]][0] = 1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Teorth</name></author>
	</entry>
	<entry>
		<id>https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1632&amp;oldid=prev</id>
		<title>Teorth: New page: // building a new lookup table (storing the Pareto-optimal sets directly) from the old one  #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;time.h&gt;  #define NUM_LINES_...</title>
		<link rel="alternate" type="text/html" href="https://michaelnielsen.org/polymath/index.php?title=Second_lookup_table_C_code&amp;diff=1632&amp;oldid=prev"/>
		<updated>2009-06-11T20:08:17Z</updated>

		<summary type="html">&lt;p&gt;New page: // building a new lookup table (storing the Pareto-optimal sets directly) from the old one  #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;time.h&amp;gt;  #define NUM_LINES_...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// building a new lookup table (storing the Pareto-optimal sets directly) from the old one&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define NUM_LINES_3D 25   // 25 non-horizontal lines in [3]^3&lt;br /&gt;
// the bitmasks of the 25 lines in [3]^3&lt;br /&gt;
const long line_bitmasks[NUM_LINES_3D] =&lt;br /&gt;
{262657l,263172l,266304l,270592l,525314l,532608l,1049601l,1050628l,1056832l,1065216l,2101256l,2105376l,4202512l,8396808l,8405024l,16781313l,16785412l,16810048l,16843008l,33562626l,33620096l,67117057l,67125252l,67174464l,67240192l};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* stat[i] is 0,1,2,3 depending on whether i (represented base 3) is of type a,b,c,d. */&lt;br /&gt;
&lt;br /&gt;
const int stat[27] = {0,1,0, 1,2,1, 0,1,0,&lt;br /&gt;
                      1,2,1, 2,3,2, 1,2,1,&lt;br /&gt;
					  0,1,0, 1,2,1, 0,1,0};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
long *data[9][13][7][2];  // data[a][b][c][d] will point to all the (a,b,c,d) Moser sets&lt;br /&gt;
&lt;br /&gt;
long numstat[9][13][7][2];  /* numstat[a][b][c][d] is the number of Moser sets with statistics (a,b,c,d) */&lt;br /&gt;
int statlabel[9][13][7][2];  /* statlabel[a][b][c][d] is the index of (a,b,c,d) in the sorted list of 499 non-zero statistics*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void init_numstat(void)  // This was precomputed&lt;br /&gt;
 {&lt;br /&gt;
 	int a,b,c,d,s[4];&lt;br /&gt;
&lt;br /&gt;
	/* Initialise numstat */&lt;br /&gt;
	for (a=0; a&amp;lt;9; a++)&lt;br /&gt;
		for (b=0; b&amp;lt;13; b++)&lt;br /&gt;
			for (c=0; c&amp;lt;7; c++)&lt;br /&gt;
				for (d=0; d&amp;lt;2; d++)&lt;br /&gt;
					numstat[a][b][c][d]=0;&lt;br /&gt;
&lt;br /&gt;
    numstat[0][0][0][0] = 1;&lt;br /&gt;
    numstat[0][0][0][1] = 1;&lt;br /&gt;
    numstat[0][0][6][0] = 1;&lt;br /&gt;
    numstat[0][12][0][0] = 1;&lt;br /&gt;
    numstat[8][0][0][0] = 1;&lt;br /&gt;
    numstat[4][12][0][0] = 2;&lt;br /&gt;
    numstat[0][0][1][0] = 6;&lt;br /&gt;
    numstat[0][0][1][1] = 6;&lt;br /&gt;
    numstat[0][0][5][0] = 6;&lt;br /&gt;
    numstat[4][0][5][0] = 6;&lt;br /&gt;
    numstat[0][0][3][1] = 8;&lt;br /&gt;
    numstat[0][6][6][0] = 8;&lt;br /&gt;
    numstat[0][9][3][0] = 8;&lt;br /&gt;
    numstat[1][0][0][0] = 8;&lt;br /&gt;
    numstat[1][0][0][1] = 8;&lt;br /&gt;
    numstat[1][0][6][0] = 8;&lt;br /&gt;
    numstat[1][12][0][0] = 8;&lt;br /&gt;
    numstat[3][12][0][0] = 8;&lt;br /&gt;
    numstat[5][9][0][0] = 8;&lt;br /&gt;
    numstat[7][0][0][0] = 8;&lt;br /&gt;
    numstat[7][3][0][0] = 8;&lt;br /&gt;
    numstat[0][0][2][1] = 12;&lt;br /&gt;
    numstat[0][1][0][0] = 12;&lt;br /&gt;
    numstat[0][1][0][1] = 12;&lt;br /&gt;
    numstat[0][1][6][0] = 12;&lt;br /&gt;
    numstat[0][11][0][0] = 12;&lt;br /&gt;
    numstat[6][0][2][0] = 12;&lt;br /&gt;
    numstat[0][0][2][0] = 15;&lt;br /&gt;
    numstat[0][0][4][0] = 15;&lt;br /&gt;
    numstat[2][0][6][0] = 16;&lt;br /&gt;
    numstat[2][12][0][0] = 16;&lt;br /&gt;
    numstat[4][0][0][1] = 16;&lt;br /&gt;
    numstat[6][6][0][0] = 16;&lt;br /&gt;
    numstat[0][0][3][0] = 20;&lt;br /&gt;
    numstat[0][10][1][0] = 24;&lt;br /&gt;
    numstat[2][0][0][1] = 24;&lt;br /&gt;
    numstat[4][11][0][0] = 24;&lt;br /&gt;
    numstat[4][9][2][0] = 24;&lt;br /&gt;
    numstat[5][0][3][0] = 24;&lt;br /&gt;
    numstat[6][0][1][0] = 24;&lt;br /&gt;
    numstat[7][1][0][0] = 24;&lt;br /&gt;
    numstat[7][2][0][0] = 24;&lt;br /&gt;
    numstat[2][0][0][0] = 28;&lt;br /&gt;
    numstat[6][0][0][0] = 28;&lt;br /&gt;
    numstat[3][0][0][1] = 32;&lt;br /&gt;
    numstat[3][9][3][0] = 32;&lt;br /&gt;
    numstat[4][0][3][1] = 32;&lt;br /&gt;
    numstat[0][5][6][0] = 48;&lt;br /&gt;
    numstat[0][9][2][0] = 48;&lt;br /&gt;
    numstat[1][0][1][0] = 48;&lt;br /&gt;
    numstat[1][0][1][1] = 48;&lt;br /&gt;
    numstat[1][0][5][0] = 48;&lt;br /&gt;
    numstat[3][0][5][0] = 48;&lt;br /&gt;
    numstat[4][1][5][0] = 48;&lt;br /&gt;
    numstat[4][4][5][0] = 48;&lt;br /&gt;
    numstat[4][6][2][1] = 48;&lt;br /&gt;
    numstat[6][3][2][0] = 48;&lt;br /&gt;
    numstat[6][4][1][0] = 48;&lt;br /&gt;
    numstat[0][2][6][0] = 54;&lt;br /&gt;
    numstat[4][0][1][1] = 54;&lt;br /&gt;
    numstat[3][0][0][0] = 56;&lt;br /&gt;
    numstat[5][0][0][0] = 56;&lt;br /&gt;
    numstat[0][2][0][1] = 60;&lt;br /&gt;
    numstat[4][0][4][0] = 60;&lt;br /&gt;
    numstat[6][1][2][0] = 60;&lt;br /&gt;
    numstat[0][6][0][1] = 64;&lt;br /&gt;
    numstat[0][6][3][1] = 64;&lt;br /&gt;
    numstat[1][0][3][1] = 64;&lt;br /&gt;
    numstat[1][6][6][0] = 64;&lt;br /&gt;
    numstat[1][9][3][0] = 64;&lt;br /&gt;
    numstat[0][10][0][0] = 66;&lt;br /&gt;
    numstat[0][2][0][0] = 66;&lt;br /&gt;
    numstat[4][0][0][0] = 70;&lt;br /&gt;
    numstat[0][1][1][0] = 72;&lt;br /&gt;
    numstat[0][1][1][1] = 72;&lt;br /&gt;
    numstat[0][1][5][0] = 72;&lt;br /&gt;
    numstat[4][0][2][1] = 72;&lt;br /&gt;
    numstat[2][6][6][0] = 80;&lt;br /&gt;
    numstat[0][1][3][1] = 96;&lt;br /&gt;
    numstat[0][8][3][0] = 96;&lt;br /&gt;
    numstat[1][0][2][1] = 96;&lt;br /&gt;
    numstat[1][1][0][0] = 96;&lt;br /&gt;
    numstat[1][1][0][1] = 96;&lt;br /&gt;
    numstat[1][1][6][0] = 96;&lt;br /&gt;
    numstat[1][11][0][0] = 96;&lt;br /&gt;
    numstat[5][0][2][0] = 96;&lt;br /&gt;
    numstat[5][4][3][0] = 96;&lt;br /&gt;
    numstat[5][7][1][0] = 96;&lt;br /&gt;
    numstat[5][8][0][0] = 96;&lt;br /&gt;
    numstat[6][2][2][0] = 96;&lt;br /&gt;
    numstat[2][9][3][0] = 104;&lt;br /&gt;
    numstat[3][0][3][1] = 104;&lt;br /&gt;
    numstat[0][4][6][0] = 108;&lt;br /&gt;
    numstat[0][6][5][0] = 108;&lt;br /&gt;
    numstat[0][7][4][0] = 108;&lt;br /&gt;
    numstat[2][0][5][0] = 108;&lt;br /&gt;
    numstat[6][5][0][0] = 108;&lt;br /&gt;
    numstat[0][3][6][0] = 112;&lt;br /&gt;
    numstat[3][6][3][1] = 112;&lt;br /&gt;
    numstat[1][0][2][0] = 120;&lt;br /&gt;
    numstat[1][0][4][0] = 120;&lt;br /&gt;
    numstat[3][11][0][0] = 120;&lt;br /&gt;
    numstat[4][6][1][1] = 120;&lt;br /&gt;
    numstat[5][0][1][0] = 120;&lt;br /&gt;
    numstat[5][6][2][0] = 120;&lt;br /&gt;
    numstat[6][1][1][0] = 120;&lt;br /&gt;
    numstat[2][0][1][1] = 132;&lt;br /&gt;
    numstat[4][2][5][0] = 132;&lt;br /&gt;
    numstat[4][6][4][0] = 132;&lt;br /&gt;
    numstat[0][1][2][1] = 144;&lt;br /&gt;
    numstat[2][0][3][1] = 144;&lt;br /&gt;
    numstat[3][0][1][1] = 144;&lt;br /&gt;
    numstat[4][1][0][1] = 144;&lt;br /&gt;
    numstat[4][3][5][0] = 144;&lt;br /&gt;
    numstat[4][9][1][0] = 144;&lt;br /&gt;
    numstat[2][0][1][0] = 156;&lt;br /&gt;
    numstat[6][1][0][0] = 156;&lt;br /&gt;
    numstat[0][3][0][1] = 160;&lt;br /&gt;
    numstat[1][0][3][0] = 160;&lt;br /&gt;
    numstat[4][10][0][0] = 162;&lt;br /&gt;
    numstat[5][1][3][0] = 168;&lt;br /&gt;
    numstat[6][3][1][0] = 168;&lt;br /&gt;
    numstat[0][1][2][0] = 180;&lt;br /&gt;
    numstat[0][1][4][0] = 180;&lt;br /&gt;
    numstat[2][1][6][0] = 180;&lt;br /&gt;
    numstat[0][5][0][1] = 192;&lt;br /&gt;
    numstat[1][10][1][0] = 192;&lt;br /&gt;
    numstat[3][10][1][0] = 192;&lt;br /&gt;
    numstat[4][4][3][1] = 192;&lt;br /&gt;
    numstat[2][11][0][0] = 204;&lt;br /&gt;
    numstat[4][0][3][0] = 212;&lt;br /&gt;
    numstat[0][6][1][1] = 216;&lt;br /&gt;
    numstat[0][6][2][1] = 216;&lt;br /&gt;
    numstat[0][9][1][0] = 216;&lt;br /&gt;
    numstat[3][0][2][1] = 216;&lt;br /&gt;
    numstat[4][6][0][1] = 216;&lt;br /&gt;
    numstat[6][2][1][0] = 216;&lt;br /&gt;
    numstat[0][3][0][0] = 220;&lt;br /&gt;
    numstat[0][9][0][0] = 220;&lt;br /&gt;
    numstat[0][1][3][0] = 240;&lt;br /&gt;
    numstat[0][4][0][1] = 240;&lt;br /&gt;
    numstat[2][0][2][1] = 240;&lt;br /&gt;
    numstat[3][0][4][0] = 240;&lt;br /&gt;
    numstat[4][0][1][0] = 246;&lt;br /&gt;
    numstat[3][0][1][0] = 264;&lt;br /&gt;
    numstat[3][6][5][0] = 264;&lt;br /&gt;
    numstat[4][1][3][1] = 264;&lt;br /&gt;
    numstat[2][1][0][1] = 276;&lt;br /&gt;
    numstat[4][7][3][0] = 288;&lt;br /&gt;
    numstat[2][0][4][0] = 300;&lt;br /&gt;
    numstat[6][4][0][0] = 300;&lt;br /&gt;
    numstat[3][9][2][0] = 312;&lt;br /&gt;
    numstat[2][1][0][0] = 324;&lt;br /&gt;
    numstat[0][2][5][0] = 336;&lt;br /&gt;
    numstat[3][1][0][1] = 336;&lt;br /&gt;
    numstat[4][0][2][0] = 336;&lt;br /&gt;
    numstat[0][2][1][1] = 348;&lt;br /&gt;
    numstat[2][0][2][0] = 360;&lt;br /&gt;
    numstat[4][5][2][1] = 360;&lt;br /&gt;
    numstat[6][2][0][0] = 360;&lt;br /&gt;
    numstat[0][2][1][0] = 384;&lt;br /&gt;
    numstat[0][5][3][1] = 384;&lt;br /&gt;
    numstat[1][5][6][0] = 384;&lt;br /&gt;
    numstat[1][9][2][0] = 384;&lt;br /&gt;
    numstat[2][10][1][0] = 384;&lt;br /&gt;
    numstat[4][8][2][0] = 384;&lt;br /&gt;
    numstat[5][3][3][0] = 384;&lt;br /&gt;
    numstat[5][2][3][0] = 408;&lt;br /&gt;
    numstat[0][2][3][1] = 432;&lt;br /&gt;
    numstat[1][2][6][0] = 432;&lt;br /&gt;
    numstat[3][7][4][0] = 432;&lt;br /&gt;
    numstat[5][1][0][0] = 432;&lt;br /&gt;
    numstat[2][0][3][0] = 440;&lt;br /&gt;
    numstat[6][3][0][0] = 440;&lt;br /&gt;
    numstat[4][1][1][1] = 456;&lt;br /&gt;
    numstat[0][8][2][0] = 480;&lt;br /&gt;
    numstat[1][2][0][1] = 480;&lt;br /&gt;
    numstat[3][8][3][0] = 480;&lt;br /&gt;
    numstat[3][0][3][0] = 488;&lt;br /&gt;
    numstat[0][4][0][0] = 495;&lt;br /&gt;
    numstat[0][8][0][0] = 495;&lt;br /&gt;
    numstat[0][5][5][0] = 504;&lt;br /&gt;
    numstat[3][0][2][0] = 504;&lt;br /&gt;
    numstat[3][1][5][0] = 504;&lt;br /&gt;
    numstat[5][7][0][0] = 504;&lt;br /&gt;
    numstat[1][6][0][1] = 512;&lt;br /&gt;
    numstat[1][6][3][1] = 512;&lt;br /&gt;
    numstat[4][1][4][0] = 516;&lt;br /&gt;
    numstat[1][10][0][0] = 528;&lt;br /&gt;
    numstat[1][2][0][0] = 528;&lt;br /&gt;
    numstat[2][5][6][0] = 528;&lt;br /&gt;
    numstat[4][2][0][1] = 540;&lt;br /&gt;
    numstat[1][1][1][0] = 576;&lt;br /&gt;
    numstat[1][1][1][1] = 576;&lt;br /&gt;
    numstat[1][1][5][0] = 576;&lt;br /&gt;
    numstat[3][1][0][0] = 600;&lt;br /&gt;
    numstat[4][1][2][1] = 600;&lt;br /&gt;
    numstat[5][5][2][0] = 648;&lt;br /&gt;
    numstat[4][1][0][0] = 660;&lt;br /&gt;
    numstat[0][2][2][1] = 672;&lt;br /&gt;
    numstat[4][5][4][0] = 672;&lt;br /&gt;
    numstat[5][1][2][0] = 696;&lt;br /&gt;
    numstat[2][9][2][0] = 720;&lt;br /&gt;
    numstat[5][6][1][0] = 720;&lt;br /&gt;
    numstat[4][2][3][1] = 744;&lt;br /&gt;
    numstat[4][5][1][1] = 744;&lt;br /&gt;
    numstat[2][2][6][0] = 756;&lt;br /&gt;
    numstat[0][3][5][0] = 768;&lt;br /&gt;
    numstat[0][7][3][0] = 768;&lt;br /&gt;
    numstat[1][1][3][1] = 768;&lt;br /&gt;
    numstat[1][8][3][0] = 768;&lt;br /&gt;
    numstat[2][6][3][1] = 768;&lt;br /&gt;
    numstat[4][9][0][0] = 772;&lt;br /&gt;
    numstat[0][5][0][0] = 792;&lt;br /&gt;
    numstat[0][5][1][1] = 792;&lt;br /&gt;
    numstat[0][7][0][0] = 792;&lt;br /&gt;
    numstat[4][3][3][1] = 792;&lt;br /&gt;
    numstat[4][5][0][1] = 792;&lt;br /&gt;
    numstat[0][6][4][0] = 816;&lt;br /&gt;
    numstat[3][10][0][0] = 816;&lt;br /&gt;
    numstat[0][3][1][1] = 864;&lt;br /&gt;
    numstat[0][4][3][1] = 864;&lt;br /&gt;
    numstat[1][4][6][0] = 864;&lt;br /&gt;
    numstat[1][6][5][0] = 864;&lt;br /&gt;
    numstat[1][7][4][0] = 864;&lt;br /&gt;
    numstat[0][2][4][0] = 870;&lt;br /&gt;
    numstat[0][8][1][0] = 870;&lt;br /&gt;
    numstat[5][1][1][0] = 888;&lt;br /&gt;
    numstat[0][4][5][0] = 894;&lt;br /&gt;
    numstat[0][3][3][1] = 896;&lt;br /&gt;
    numstat[1][3][6][0] = 896;&lt;br /&gt;
    numstat[3][6][0][1] = 896;&lt;br /&gt;
    numstat[0][6][0][0] = 924;&lt;br /&gt;
    numstat[0][2][2][0] = 930;&lt;br /&gt;
    numstat[0][5][2][1] = 1008;&lt;br /&gt;
    numstat[3][6][2][1] = 1008;&lt;br /&gt;
    numstat[3][1][3][1] = 1056;&lt;br /&gt;
    numstat[3][5][3][1] = 1056;&lt;br /&gt;
    numstat[4][3][0][1] = 1088;&lt;br /&gt;
    numstat[1][1][2][1] = 1152;&lt;br /&gt;
    numstat[2][6][0][1] = 1152;&lt;br /&gt;
    numstat[0][4][1][1] = 1158;&lt;br /&gt;
    numstat[2][10][0][0] = 1188;&lt;br /&gt;
    numstat[0][2][3][0] = 1200;&lt;br /&gt;
    numstat[0][3][1][0] = 1200;&lt;br /&gt;
    numstat[2][1][5][0] = 1224;&lt;br /&gt;
    numstat[4][4][0][1] = 1254;&lt;br /&gt;
    numstat[1][3][0][1] = 1280;&lt;br /&gt;
    numstat[2][4][6][0] = 1296;&lt;br /&gt;
    numstat[2][6][5][0] = 1296;&lt;br /&gt;
    numstat[2][2][0][1] = 1320;&lt;br /&gt;
    numstat[2][8][3][0] = 1344;&lt;br /&gt;
    numstat[2][7][4][0] = 1404;&lt;br /&gt;
    numstat[4][8][1][0] = 1416;&lt;br /&gt;
    numstat[1][1][2][0] = 1440;&lt;br /&gt;
    numstat[1][1][4][0] = 1440;&lt;br /&gt;
    numstat[4][4][2][1] = 1440;&lt;br /&gt;
    numstat[2][3][6][0] = 1456;&lt;br /&gt;
    numstat[3][2][0][1] = 1464;&lt;br /&gt;
    numstat[5][2][0][0] = 1464;&lt;br /&gt;
    numstat[3][1][1][1] = 1488;&lt;br /&gt;
    numstat[4][2][1][1] = 1488;&lt;br /&gt;
    numstat[2][1][1][1] = 1512;&lt;br /&gt;
    numstat[5][6][0][0] = 1512;&lt;br /&gt;
    numstat[0][3][2][1] = 1536;&lt;br /&gt;
    numstat[1][5][0][1] = 1536;&lt;br /&gt;
    numstat[3][5][5][0] = 1608;&lt;br /&gt;
    numstat[2][1][3][1] = 1632;&lt;br /&gt;
    numstat[4][2][4][0] = 1662;&lt;br /&gt;
    numstat[2][2][0][0] = 1716;&lt;br /&gt;
    numstat[1][6][1][1] = 1728;&lt;br /&gt;
    numstat[1][6][2][1] = 1728;&lt;br /&gt;
    numstat[1][9][1][0] = 1728;&lt;br /&gt;
    numstat[1][3][0][0] = 1760;&lt;br /&gt;
    numstat[1][9][0][0] = 1760;&lt;br /&gt;
    numstat[0][4][2][1] = 1788;&lt;br /&gt;
    numstat[2][1][1][0] = 1800;&lt;br /&gt;
    numstat[4][4][4][0] = 1806;&lt;br /&gt;
    numstat[3][6][1][1] = 1824;&lt;br /&gt;
    numstat[4][2][2][1] = 1824;&lt;br /&gt;
    numstat[5][4][2][0] = 1824;&lt;br /&gt;
    numstat[4][1][3][0] = 1896;&lt;br /&gt;
    numstat[1][1][3][0] = 1920;&lt;br /&gt;
    numstat[1][4][0][1] = 1920;&lt;br /&gt;
    numstat[4][4][1][1] = 1920;&lt;br /&gt;
    numstat[0][7][2][0] = 1932;&lt;br /&gt;
    numstat[5][2][2][0] = 1944;&lt;br /&gt;
    numstat[3][2][5][0] = 2016;&lt;br /&gt;
    numstat[0][7][1][0] = 2064;&lt;br /&gt;
    numstat[4][6][3][0] = 2096;&lt;br /&gt;
    numstat[3][9][1][0] = 2160;&lt;br /&gt;
    numstat[0][3][4][0] = 2172;&lt;br /&gt;
    numstat[3][1][2][1] = 2208;&lt;br /&gt;
    numstat[0][5][4][0] = 2232;&lt;br /&gt;
    numstat[4][1][1][0] = 2280;&lt;br /&gt;
    numstat[5][5][1][0] = 2352;&lt;br /&gt;
    numstat[4][3][1][1] = 2376;&lt;br /&gt;
    numstat[0][4][1][0] = 2436;&lt;br /&gt;
    numstat[4][3][2][1] = 2472;&lt;br /&gt;
    numstat[4][3][4][0] = 2496;&lt;br /&gt;
    numstat[3][1][4][0] = 2520;&lt;br /&gt;
    numstat[4][8][0][0] = 2634;&lt;br /&gt;
    numstat[4][7][2][0] = 2640;&lt;br /&gt;
    numstat[5][3][2][0] = 2640;&lt;br /&gt;
    numstat[1][2][5][0] = 2688;&lt;br /&gt;
    numstat[0][6][3][0] = 2696;&lt;br /&gt;
    numstat[0][3][2][0] = 2712;&lt;br /&gt;
    numstat[5][2][1][0] = 2712;&lt;br /&gt;
    numstat[2][1][2][1] = 2736;&lt;br /&gt;
    numstat[1][2][1][1] = 2784;&lt;br /&gt;
    numstat[4][2][0][0] = 2802;&lt;br /&gt;
    numstat[3][1][1][0] = 2808;&lt;br /&gt;
    numstat[5][3][0][0] = 2856;&lt;br /&gt;
    numstat[5][5][0][0] = 2856;&lt;br /&gt;
    numstat[3][2][0][0] = 2928;&lt;br /&gt;
    numstat[0][4][4][0] = 2988;&lt;br /&gt;
    numstat[2][6][2][1] = 3024;&lt;br /&gt;
    numstat[1][2][1][0] = 3072;&lt;br /&gt;
    numstat[1][5][3][1] = 3072;&lt;br /&gt;
    numstat[3][5][0][1] = 3072;&lt;br /&gt;
    numstat[4][1][2][0] = 3072;&lt;br /&gt;
    numstat[0][6][1][0] = 3192;&lt;br /&gt;
    numstat[0][3][3][0] = 3248;&lt;br /&gt;
    numstat[3][9][0][0] = 3320;&lt;br /&gt;
    numstat[0][5][1][0] = 3360;&lt;br /&gt;
    numstat[2][3][0][1] = 3360;&lt;br /&gt;
    numstat[3][3][0][1] = 3392;&lt;br /&gt;
    numstat[2][1][4][0] = 3420;&lt;br /&gt;
    numstat[1][2][3][1] = 3456;&lt;br /&gt;
    numstat[2][6][1][1] = 3456;&lt;br /&gt;
    numstat[5][4][0][0] = 3528;&lt;br /&gt;
    numstat[3][4][5][0] = 3600;&lt;br /&gt;
    numstat[2][5][0][1] = 3648;&lt;br /&gt;
    numstat[2][9][1][0] = 3672;&lt;br /&gt;
    numstat[1][8][2][0] = 3840;&lt;br /&gt;
    numstat[3][3][5][0] = 3840;&lt;br /&gt;
    numstat[3][2][3][1] = 3888;&lt;br /&gt;
    numstat[3][8][2][0] = 3936;&lt;br /&gt;
    numstat[1][4][0][0] = 3960;&lt;br /&gt;
    numstat[1][8][0][0] = 3960;&lt;br /&gt;
    numstat[3][4][3][1] = 3960;&lt;br /&gt;
    numstat[1][5][5][0] = 4032;&lt;br /&gt;
    numstat[2][1][2][0] = 4140;&lt;br /&gt;
    numstat[3][6][4][0] = 4176;&lt;br /&gt;
    numstat[2][9][0][0] = 4180;&lt;br /&gt;
    numstat[5][4][1][0] = 4224;&lt;br /&gt;
    numstat[0][6][2][0] = 4248;&lt;br /&gt;
    numstat[3][4][0][1] = 4416;&lt;br /&gt;
    numstat[5][3][1][0] = 4440;&lt;br /&gt;
    numstat[2][4][0][1] = 4800;&lt;br /&gt;
    numstat[0][4][2][0] = 4911;&lt;br /&gt;
    numstat[0][5][3][0] = 4920;&lt;br /&gt;
    numstat[2][5][3][1] = 4992;&lt;br /&gt;
    numstat[2][1][3][0] = 5040;&lt;br /&gt;
    numstat[3][7][3][0] = 5112;&lt;br /&gt;
    numstat[3][1][3][0] = 5136;&lt;br /&gt;
    numstat[0][4][3][0] = 5172;&lt;br /&gt;
    numstat[3][1][2][0] = 5328;&lt;br /&gt;
    numstat[1][2][2][1] = 5376;&lt;br /&gt;
    numstat[2][2][5][0] = 5376;&lt;br /&gt;
    numstat[2][3][0][0] = 5500;&lt;br /&gt;
    numstat[0][5][2][0] = 5712;&lt;br /&gt;
    numstat[3][5][2][1] = 6096;&lt;br /&gt;
    numstat[3][2][1][1] = 6120;&lt;br /&gt;
    numstat[1][3][5][0] = 6144;&lt;br /&gt;
    numstat[1][7][3][0] = 6144;&lt;br /&gt;
    numstat[3][3][3][1] = 6176;&lt;br /&gt;
    numstat[1][5][0][0] = 6336;&lt;br /&gt;
    numstat[1][5][1][1] = 6336;&lt;br /&gt;
    numstat[1][7][0][0] = 6336;&lt;br /&gt;
    numstat[4][7][1][0] = 6336;&lt;br /&gt;
    numstat[4][7][0][0] = 6384;&lt;br /&gt;
    numstat[1][6][4][0] = 6528;&lt;br /&gt;
    numstat[2][5][5][0] = 6552;&lt;br /&gt;
    numstat[4][2][3][0] = 6720;&lt;br /&gt;
    numstat[4][5][3][0] = 6720;&lt;br /&gt;
    numstat[1][3][1][1] = 6912;&lt;br /&gt;
    numstat[1][4][3][1] = 6912;&lt;br /&gt;
    numstat[2][2][3][1] = 6912;&lt;br /&gt;
    numstat[1][2][4][0] = 6960;&lt;br /&gt;
    numstat[1][8][1][0] = 6960;&lt;br /&gt;
    numstat[2][2][1][1] = 6960;&lt;br /&gt;
    numstat[4][3][0][0] = 7064;&lt;br /&gt;
    numstat[1][4][5][0] = 7152;&lt;br /&gt;
    numstat[1][3][3][1] = 7168;&lt;br /&gt;
    numstat[1][6][0][0] = 7392;&lt;br /&gt;
    numstat[1][2][2][0] = 7440;&lt;br /&gt;
    numstat[2][8][2][0] = 7680;&lt;br /&gt;
    numstat[3][5][1][1] = 8016;&lt;br /&gt;
    numstat[1][5][2][1] = 8064;&lt;br /&gt;
    numstat[3][2][2][1] = 8592;&lt;br /&gt;
    numstat[3][3][0][0] = 8600;&lt;br /&gt;
    numstat[3][8][0][0] = 9000;&lt;br /&gt;
    numstat[4][2][1][0] = 9132;&lt;br /&gt;
    numstat[2][2][1][0] = 9216;&lt;br /&gt;
    numstat[1][4][1][1] = 9264;&lt;br /&gt;
    numstat[1][2][3][0] = 9600;&lt;br /&gt;
    numstat[1][3][1][0] = 9600;&lt;br /&gt;
    numstat[4][6][2][0] = 9804;&lt;br /&gt;
    numstat[2][8][0][0] = 9900;&lt;br /&gt;
    numstat[3][2][4][0] = 10464;&lt;br /&gt;
    numstat[3][8][1][0] = 10776;&lt;br /&gt;
    numstat[4][6][0][0] = 11004;&lt;br /&gt;
    numstat[2][6][4][0] = 11424;&lt;br /&gt;
    numstat[2][3][5][0] = 11520;&lt;br /&gt;
    numstat[2][7][3][0] = 11520;&lt;br /&gt;
    numstat[4][2][2][0] = 11652;&lt;br /&gt;
    numstat[4][4][0][0] = 11742;&lt;br /&gt;
    numstat[2][4][0][0] = 11880;&lt;br /&gt;
    numstat[4][4][3][0] = 12000;&lt;br /&gt;
    numstat[2][2][2][1] = 12096;&lt;br /&gt;
    numstat[2][4][3][1] = 12096;&lt;br /&gt;
    numstat[4][3][3][0] = 12120;&lt;br /&gt;
    numstat[1][3][2][1] = 12288;&lt;br /&gt;
    numstat[2][4][5][0] = 12516;&lt;br /&gt;
    numstat[3][3][1][1] = 12768;&lt;br /&gt;
    numstat[3][2][1][0] = 13152;&lt;br /&gt;
    numstat[2][3][3][1] = 13440;&lt;br /&gt;
    numstat[2][5][1][1] = 13464;&lt;br /&gt;
    numstat[4][5][0][0] = 13512;&lt;br /&gt;
    numstat[3][4][1][1] = 14208;&lt;br /&gt;
    numstat[1][4][2][1] = 14304;&lt;br /&gt;
    numstat[3][4][2][1] = 14352;&lt;br /&gt;
    numstat[3][5][4][0] = 14688;&lt;br /&gt;
    numstat[2][5][2][1] = 15120;&lt;br /&gt;
    numstat[1][7][2][0] = 15456;&lt;br /&gt;
    numstat[2][2][4][0] = 15660;&lt;br /&gt;
    numstat[2][8][1][0] = 15660;&lt;br /&gt;
    numstat[3][3][2][1] = 15888;&lt;br /&gt;
    numstat[2][3][1][1] = 16416;&lt;br /&gt;
    numstat[1][7][1][0] = 16512;&lt;br /&gt;
    numstat[4][6][1][0] = 16536;&lt;br /&gt;
    numstat[2][7][0][0] = 16632;&lt;br /&gt;
    numstat[3][4][0][0] = 16920;&lt;br /&gt;
    numstat[3][7][0][0] = 17136;&lt;br /&gt;
    numstat[1][3][4][0] = 17376;&lt;br /&gt;
    numstat[1][5][4][0] = 17856;&lt;br /&gt;
    numstat[2][5][0][0] = 18216;&lt;br /&gt;
    numstat[1][4][1][0] = 19488;&lt;br /&gt;
    numstat[3][7][2][0] = 19896;&lt;br /&gt;
    numstat[2][6][0][0] = 20328;&lt;br /&gt;
    numstat[2][2][2][0] = 20460;&lt;br /&gt;
    numstat[4][3][1][0] = 20760;&lt;br /&gt;
    numstat[2][4][1][1] = 20844;&lt;br /&gt;
    numstat[1][6][3][0] = 21568;&lt;br /&gt;
    numstat[4][5][2][0] = 21576;&lt;br /&gt;
    numstat[1][3][2][0] = 21696;&lt;br /&gt;
    numstat[3][3][4][0] = 21936;&lt;br /&gt;
    numstat[3][2][3][0] = 22176;&lt;br /&gt;
    numstat[3][6][3][0] = 22904;&lt;br /&gt;
    numstat[3][5][0][0] = 23472;&lt;br /&gt;
    numstat[3][6][0][0] = 23520;&lt;br /&gt;
    numstat[1][4][4][0] = 23904;&lt;br /&gt;
    numstat[4][3][2][0] = 23904;&lt;br /&gt;
    numstat[3][2][2][0] = 23952;&lt;br /&gt;
    numstat[2][2][3][0] = 24000;&lt;br /&gt;
    numstat[3][4][4][0] = 24672;&lt;br /&gt;
    numstat[1][6][1][0] = 25536;&lt;br /&gt;
    numstat[1][3][3][0] = 25984;&lt;br /&gt;
    numstat[2][3][2][1] = 26112;&lt;br /&gt;
    numstat[1][5][1][0] = 26880;&lt;br /&gt;
    numstat[4][5][1][0] = 27360;&lt;br /&gt;
    numstat[2][3][1][0] = 27600;&lt;br /&gt;
    numstat[2][4][2][1] = 28608;&lt;br /&gt;
    numstat[4][4][2][0] = 29040;&lt;br /&gt;
    numstat[4][4][1][0] = 29550;&lt;br /&gt;
    numstat[3][7][1][0] = 31272;&lt;br /&gt;
    numstat[2][7][2][0] = 32844;&lt;br /&gt;
    numstat[2][5][4][0] = 33480;&lt;br /&gt;
    numstat[1][6][2][0] = 33984;&lt;br /&gt;
    numstat[3][3][1][0] = 35736;&lt;br /&gt;
    numstat[2][3][4][0] = 36924;&lt;br /&gt;
    numstat[2][7][1][0] = 39216;&lt;br /&gt;
    numstat[1][4][2][0] = 39288;&lt;br /&gt;
    numstat[1][5][3][0] = 39360;&lt;br /&gt;
    numstat[1][4][3][0] = 41376;&lt;br /&gt;
    numstat[2][6][3][0] = 43136;&lt;br /&gt;
    numstat[1][5][2][0] = 45696;&lt;br /&gt;
    numstat[2][4][4][0] = 47808;&lt;br /&gt;
    numstat[3][3][3][0] = 50912;&lt;br /&gt;
    numstat[3][5][3][0] = 52272;&lt;br /&gt;
    numstat[2][4][1][0] = 53592;&lt;br /&gt;
    numstat[3][6][2][0] = 54216;&lt;br /&gt;
    numstat[2][3][2][0] = 56952;&lt;br /&gt;
    numstat[3][6][1][0] = 58368;&lt;br /&gt;
    numstat[3][3][2][0] = 59952;&lt;br /&gt;
    numstat[2][3][3][0] = 61712;&lt;br /&gt;
    numstat[3][4][1][0] = 62400;&lt;br /&gt;
    numstat[2][6][1][0] = 63840;&lt;br /&gt;
    numstat[3][4][3][0] = 67416;&lt;br /&gt;
    numstat[2][5][1][0] = 70560;&lt;br /&gt;
    numstat[3][5][1][0] = 73176;&lt;br /&gt;
    numstat[2][6][2][0] = 76464;&lt;br /&gt;
    numstat[2][5][3][0] = 83640;&lt;br /&gt;
    numstat[3][5][2][0] = 88944;&lt;br /&gt;
    numstat[3][4][2][0] = 91824;&lt;br /&gt;
    numstat[2][4][3][0] = 93096;&lt;br /&gt;
    numstat[2][4][2][0] = 98220;&lt;br /&gt;
    numstat[2][5][2][0] = 108528;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// compute statlabel;&lt;br /&gt;
&lt;br /&gt;
    int count=0;&lt;br /&gt;
	for (a=0; a&amp;lt;9; a++)&lt;br /&gt;
		for (b=0; b&amp;lt;13; b++)&lt;br /&gt;
			for (c=0; c&amp;lt;7; c++)&lt;br /&gt;
				for (d=0; d&amp;lt;2; d++)&lt;br /&gt;
					if (numstat[a][b][c][d])&lt;br /&gt;
						{&lt;br /&gt;
							statlabel[a][b][c][d] = count;&lt;br /&gt;
//							printf(&amp;quot;%d:(%d %d %d %d) &amp;quot;, count,a,b,c,d);&lt;br /&gt;
							count++;&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
 						statlabel[a][b][c][d]=0;&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define NUM_ACD 49 // number of interesting possible acd statistics for 3D Moser sets&lt;br /&gt;
&lt;br /&gt;
int a_base[NUM_ACD], c_base[NUM_ACD], d_base[NUM_ACD];&lt;br /&gt;
&lt;br /&gt;
void init_pareto(void) // this was precomputed&lt;br /&gt;
 {&lt;br /&gt;
  int i=0;&lt;br /&gt;
&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 5; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 6; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 7; c_base[i] = 0; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 5; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 6; c_base[i] = 1; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 5; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 6; c_base[i] = 2; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 3; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 3; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 3; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 3; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 5; c_base[i] = 3; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 4; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 4; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 4; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 4; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 5; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 5; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 5; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 5; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 6; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 6; d_base[i] = 0; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 0; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 0; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 0; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 0; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 1; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 1; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 1; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 1; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 2; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 2; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 2; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 2; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 0; c_base[i] = 3; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 2; c_base[i] = 3; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 3; c_base[i] = 3; d_base[i] = 1; i++;&lt;br /&gt;
  a_base[i] = 4; c_base[i] = 3; d_base[i] = 1; i++;&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void init_data(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	int i,j,k;&lt;br /&gt;
&lt;br /&gt;
	long NUM_SETS_3D = 1;&lt;br /&gt;
    for (i=0; i&amp;lt;27; i++) NUM_SETS_3D *= 2;&lt;br /&gt;
&lt;br /&gt;
	// allocate space&lt;br /&gt;
&lt;br /&gt;
	init_numstat();       // load statistics&lt;br /&gt;
    init_pareto();        // load pareto counts&lt;br /&gt;
&lt;br /&gt;
	int aa, bb, cc, dd;&lt;br /&gt;
&lt;br /&gt;
	for (aa=0; aa&amp;lt;9; aa++)&lt;br /&gt;
		for (bb=0; bb&amp;lt;13; bb++)&lt;br /&gt;
			for (cc=0; cc&amp;lt;7; cc++)&lt;br /&gt;
				for (dd=0; dd&amp;lt;2; dd++)&lt;br /&gt;
					if (numstat[aa][bb][cc][dd] &amp;gt; 0)&lt;br /&gt;
						{&lt;br /&gt;
							data[aa][bb][cc][dd] = malloc(numstat[aa][bb][cc][dd]*sizeof(long));&lt;br /&gt;
					    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* enumerate the 230 line-free sets in [3]^2 by brute force */&lt;br /&gt;
&lt;br /&gt;
    int moser_2d[512];&lt;br /&gt;
	int lincount=0;&lt;br /&gt;
&lt;br /&gt;
    for (i=0; i &amp;lt; 512; i++)&lt;br /&gt;
     {&lt;br /&gt;
      moser_2d[i] = 0;&lt;br /&gt;
	  if ((i &amp;amp; 7) == 7) continue;&lt;br /&gt;
	  if ((i &amp;amp; 56) == 56) continue;&lt;br /&gt;
	  if ((i &amp;amp; 73) == 73) continue;&lt;br /&gt;
	  if ((i &amp;amp; 84) == 84) continue;&lt;br /&gt;
	  if ((i &amp;amp; 146) == 146) continue;&lt;br /&gt;
	  if ((i &amp;amp; 273) == 273) continue;&lt;br /&gt;
	  if ((i &amp;amp; 292) == 292) continue;&lt;br /&gt;
	  if ((i &amp;amp; 448) == 448) continue;&lt;br /&gt;
	  moser_2d[i] = 1;&lt;br /&gt;
	  lincount++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Number of 2D Moser sets: %d\n&amp;quot;, lincount);&lt;br /&gt;
&lt;br /&gt;
    /* Now enumerate all line-free sets in [3]^3 by brute force. */&lt;br /&gt;
    long set, tmpset;&lt;br /&gt;
	long slice1, slice2, slice3;&lt;br /&gt;
	int s[4];&lt;br /&gt;
	long temp_numstat[9][13][7][2];&lt;br /&gt;
	long num_linefree=0;&lt;br /&gt;
&lt;br /&gt;
	/* Initialise temp_numstat */&lt;br /&gt;
	for (aa=0; aa&amp;lt;9; aa++)&lt;br /&gt;
		for (bb=0; bb&amp;lt;13; bb++)&lt;br /&gt;
			for (cc=0; cc&amp;lt;7; cc++)&lt;br /&gt;
				for (dd=0; dd&amp;lt;2; dd++)&lt;br /&gt;
					temp_numstat[aa][bb][cc][dd]=0;&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Computing 3D Moser sets...\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	for (slice1 = 0; slice1 &amp;lt; 512; slice1++) if (moser_2d[slice1])&lt;br /&gt;
	 for (slice2 = 0; slice2 &amp;lt; 512; slice2++) if (moser_2d[slice2])&lt;br /&gt;
	  for (slice3 = 0; slice3 &amp;lt; 512; slice3++) if (moser_2d[slice3])&lt;br /&gt;
		{&lt;br /&gt;
			set = slice1 | (slice2 &amp;lt;&amp;lt; 9) | (slice3 &amp;lt;&amp;lt; 18);&lt;br /&gt;
&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[0]) == line_bitmasks[0]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[1]) == line_bitmasks[1]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[2]) == line_bitmasks[2]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[3]) == line_bitmasks[3]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[4]) == line_bitmasks[4]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[5]) == line_bitmasks[5]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[6]) == line_bitmasks[6]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[7]) == line_bitmasks[7]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[8]) == line_bitmasks[8]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[9]) == line_bitmasks[9]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[10]) == line_bitmasks[10]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[11]) == line_bitmasks[11]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[12]) == line_bitmasks[12]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[13]) == line_bitmasks[13]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[14]) == line_bitmasks[14]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[15]) == line_bitmasks[15]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[16]) == line_bitmasks[16]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[17]) == line_bitmasks[17]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[18]) == line_bitmasks[18]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[19]) == line_bitmasks[19]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[20]) == line_bitmasks[20]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[21]) == line_bitmasks[21]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[22]) == line_bitmasks[22]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[23]) == line_bitmasks[23]) continue;&lt;br /&gt;
			if ((set &amp;amp; line_bitmasks[24]) == line_bitmasks[24]) continue;&lt;br /&gt;
&lt;br /&gt;
			/* now compute the a,b,c,d stats */&lt;br /&gt;
			s[0]=s[1]=s[2]=s[3]=0;&lt;br /&gt;
		    tmpset = set;&lt;br /&gt;
			for (j=0; j &amp;lt; 27; j++)&lt;br /&gt;
				{&lt;br /&gt;
					if (tmpset &amp;amp; 1l) s[stat[j]]++;&lt;br /&gt;
					tmpset /= 2;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
       		data[s[0]][s[1]][s[2]][s[3]][temp_numstat[s[0]][s[1]][s[2]][s[3]]] = set;&lt;br /&gt;
&lt;br /&gt;
			temp_numstat[s[0]][s[1]][s[2]][s[3]]++;&lt;br /&gt;
			num_linefree++;&lt;br /&gt;
			if (num_linefree % 10000 == 0)  printf(&amp;quot;*&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;\nNumber of 3D Moser sets: %ld\n&amp;quot;, num_linefree);&lt;br /&gt;
// checksum&lt;br /&gt;
	for (aa=0; aa&amp;lt;9; aa++)&lt;br /&gt;
		for (bb=0; bb&amp;lt;13; bb++)&lt;br /&gt;
			for (cc=0; cc&amp;lt;7; cc++)&lt;br /&gt;
				for (dd=0; dd&amp;lt;2; dd++)&lt;br /&gt;
					if (numstat[aa][bb][cc][dd] != temp_numstat[aa][bb][cc][dd])&lt;br /&gt;
						printf(&amp;quot;Inconsistency at %d %d %d %d!  %ld != %ld\n&amp;quot;, aa,bb,cc,dd,numstat[aa][bb][cc][dd],temp_numstat[aa][bb][cc][dd]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int perms[48][27];  // The 48 symmetries of the cube&lt;br /&gt;
long pow2[27];      // The 27 powers of 2&lt;br /&gt;
&lt;br /&gt;
char table[144][16384][NUM_ACD];&lt;br /&gt;
&lt;br /&gt;
void buildperms(void)&lt;br /&gt;
{&lt;br /&gt;
   int i,j,k,p,x,y,z,u,v,w;&lt;br /&gt;
   int n=0;&lt;br /&gt;
   long power=1;&lt;br /&gt;
&lt;br /&gt;
   for (i=0; i&amp;lt;27; i++) { pow2[i] = power; power *= 2; }&lt;br /&gt;
&lt;br /&gt;
   for (x=0;x&amp;lt;2;x++)&lt;br /&gt;
	   for (y=0;y&amp;lt;2;y++)&lt;br /&gt;
		   for (z=0;z&amp;lt;2;z++)&lt;br /&gt;
			   for (p=0;p&amp;lt;6;p++)&lt;br /&gt;
				   {					   ;&lt;br /&gt;
					   for (i=0;i&amp;lt;3;i++)&lt;br /&gt;
						   for (j=0;j&amp;lt;3;j++)&lt;br /&gt;
							   for (k=0;k&amp;lt;3;k++)&lt;br /&gt;
								   {&lt;br /&gt;
								   switch (p)&lt;br /&gt;
							   		{&lt;br /&gt;
										case 0: u=i; v=j; w=k; break;&lt;br /&gt;
										case 1: u=i; v=k; w=j; break;&lt;br /&gt;
										case 2: u=j; v=i; w=k; break;&lt;br /&gt;
										case 3: u=j; v=k; w=i; break;&lt;br /&gt;
										case 4: u=k; v=j; w=i; break;&lt;br /&gt;
										case 5: u=k; v=i; w=j; break;&lt;br /&gt;
								 	 }&lt;br /&gt;
									if (x) u = 2-u;&lt;br /&gt;
									if (y) v = 2-v;&lt;br /&gt;
									if (z) w = 2-w;&lt;br /&gt;
									perms[n][i+3*j+9*k] = u+3*v+9*w;&lt;br /&gt;
								}&lt;br /&gt;
						n++;&lt;br /&gt;
					}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
long perm(long set, int i) // permutes set by permutation i&lt;br /&gt;
{&lt;br /&gt;
	long in,out;&lt;br /&gt;
	int j;&lt;br /&gt;
&lt;br /&gt;
	      in = set; out = 0;&lt;br /&gt;
		  for (j=0; j &amp;lt; 27; j++)&lt;br /&gt;
			  {&lt;br /&gt;
				 if (in &amp;amp; 1) out |= pow2[perms[i][j]];&lt;br /&gt;
				 in &amp;gt;&amp;gt;= 1;&lt;br /&gt;
			  }&lt;br /&gt;
&lt;br /&gt;
	  return out;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int index(long set)  // gives the permutation index of set of minimal size&lt;br /&gt;
 {&lt;br /&gt;
	 long best = set, tmp;&lt;br /&gt;
	 int i,j=0;&lt;br /&gt;
&lt;br /&gt;
	 for (i=0; i &amp;lt; 48; i++)&lt;br /&gt;
		 {&lt;br /&gt;
			 tmp = perm(set, i);&lt;br /&gt;
			 if (tmp &amp;lt; best)&lt;br /&gt;
				 {&lt;br /&gt;
					 best = tmp;&lt;br /&gt;
					 j = i;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
	  return j;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define NUM_CRUSH 144&lt;br /&gt;
&lt;br /&gt;
const int expand[NUM_CRUSH] = {0, 1, 3, 6, 7, 15, 19, 20, 21, 22, 23, 28, 29, 31, 54, 55, 56, 57, 58, 59, 62, 63, 96, 97, 99, 101, 102, 103, 111,&lt;br /&gt;
112, 113, 115, 116, 117, 118, 119, 124, 125, 127, 240, 241, 243, 246, 247, 255, 270, 271, 284, 285, 286, 287, 318, 319, 324, 325, 327, 332,&lt;br /&gt;
333, 334, 335, 343, 348, 349, 350, 351, 360, 361, 362, 363, 364, 365, 366, 367, 377, 379, 380, 381, 382, 383, 449, 451, 454, 455, 457, 459,&lt;br /&gt;
462, 463, 468, 469, 470, 471, 473, 475, 476, 477, 478, 479, 497, 498, 499, 502, 503, 504, 505, 506, 507, 510, 511, 876, 877, 879, 895, 911,&lt;br /&gt;
924, 925, 927, 938, 939, 942, 943, 958, 959, 995, 998, 999, 1005, 1007, 1011, 1013, 1014, 1015, 1020, 1021, 1023, 1782, 1783, 1785, 1787,&lt;br /&gt;
1791, 2013, 2015, 2046, 2047, 4095};  // minimal b-labels&lt;br /&gt;
&lt;br /&gt;
int crush[4096];   // maps the label of a b-word to the label of its minimal permutation&lt;br /&gt;
int crushperm[4096];  // maps the label of a b-word to the permutation used to minimise it&lt;br /&gt;
&lt;br /&gt;
const int bc[12] = { 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 };  // the b points in [3]^3&lt;br /&gt;
const int ac[14] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26 }; // the ac points in [3]^3&lt;br /&gt;
&lt;br /&gt;
void buildhash(void)&lt;br /&gt;
{&lt;br /&gt;
   int i,j,k,count=0;&lt;br /&gt;
   long l,m;&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Building hash...\n&amp;quot;);&lt;br /&gt;
   for (i = 0; i&amp;lt;4096;i++)&lt;br /&gt;
	   {&lt;br /&gt;
		   j=i; l=0;&lt;br /&gt;
		   for (k=0;k&amp;lt;12;k++)&lt;br /&gt;
			   {&lt;br /&gt;
				   if (j &amp;amp; 1) l |= pow2[bc[k]];&lt;br /&gt;
				   j &amp;gt;&amp;gt;=1;&lt;br /&gt;
				}&lt;br /&gt;
			// l is now the b-word associated to i&lt;br /&gt;
		    crushperm[i] = index(l);&lt;br /&gt;
//			printf(&amp;quot;%o (%lo) crushed by %d &amp;quot;, i, l, crushperm[i]);&lt;br /&gt;
		    m = perm(l, crushperm[i]);&lt;br /&gt;
//			printf(&amp;quot;and permuted to %o &amp;quot;, m);&lt;br /&gt;
&lt;br /&gt;
			j=0;&lt;br /&gt;
			for (k=0;k&amp;lt;12;k++)&lt;br /&gt;
				if (m &amp;amp; pow2[bc[k]]) j |= pow2[k];&lt;br /&gt;
			// j is now the label of the reduction of l&lt;br /&gt;
&lt;br /&gt;
//			printf(&amp;quot; (i.e. %d)&amp;quot;, j);&lt;br /&gt;
			for (k=0; k&amp;lt;NUM_CRUSH; k++)&lt;br /&gt;
				if (expand[k] == j) crush[i] = k;&lt;br /&gt;
&lt;br /&gt;
			if (i == expand[crush[i]])&lt;br /&gt;
				{&lt;br /&gt;
					printf(&amp;quot;%d &amp;quot;, i);&lt;br /&gt;
					count++;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
  printf(&amp;quot;Total mins: %d\n&amp;quot;, count);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define MAX_PARETO 26   // any forbidden set can generate at most 26 Pareto-optimals&lt;br /&gt;
&lt;br /&gt;
FILE * newtable;&lt;br /&gt;
&lt;br /&gt;
void read_lookup(void)&lt;br /&gt;
 {&lt;br /&gt;
	  FILE *input = fopen(&amp;quot;lookup.dat&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	  printf(&amp;quot;Loading lookup table...\n&amp;quot;);&lt;br /&gt;
	  int i, j, k;&lt;br /&gt;
	  for (i=0; i&amp;lt;144; i++)&lt;br /&gt;
		{&lt;br /&gt;
		  printf(&amp;quot;.&amp;quot;);&lt;br /&gt;
		  for (j=0; j&amp;lt;16384; j++)&lt;br /&gt;
			  fread(table[i][j],sizeof(char),NUM_ACD,input);&lt;br /&gt;
//			  for (k=0; k&amp;lt;NUM_ACD; k++)&lt;br /&gt;
//				  table[i][j][k] = (char) fgetc(input);&lt;br /&gt;
	    }&lt;br /&gt;
	  printf(&amp;quot;\nTable loaded!\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
int test( long forbidden )  // see what statistics are compatible with a forbidden set.  Note that the 222 bit is ignored.&lt;br /&gt;
 {&lt;br /&gt;
  int i,j,k,l,a,b,x,y,z,w;&lt;br /&gt;
  long forb, recon;&lt;br /&gt;
&lt;br /&gt;
//  printf(&amp;quot;Testing %lo (= %ld in decimal)\n&amp;quot;, forbidden, forbidden);&lt;br /&gt;
&lt;br /&gt;
  a=0;&lt;br /&gt;
  for (k=0;k&amp;lt;12;k++)&lt;br /&gt;
	 if (forbidden &amp;amp; pow2[bc[k]]) a |= pow2[k];&lt;br /&gt;
&lt;br /&gt;
  forb = perm(forbidden, crushperm[a]);&lt;br /&gt;
  a = crush[a];&lt;br /&gt;
//  forb = forbidden;  // can do this b/c we are only working with minimal sets right now&lt;br /&gt;
&lt;br /&gt;
//  printf(&amp;quot;Permuted version: %lo (= %ld in decimal), using permutation %d\n&amp;quot;, forb, forb, crushperm[a]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  b=0;&lt;br /&gt;
&lt;br /&gt;
  for (k=0;k&amp;lt;14;k++)&lt;br /&gt;
	  if (forb &amp;amp; pow2[ac[k]]) b |= pow2[k];&lt;br /&gt;
&lt;br /&gt;
//  printf(&amp;quot;Hashes: %o %o \n&amp;quot;, a, b );&lt;br /&gt;
&lt;br /&gt;
//  recon = 0;&lt;br /&gt;
//  for (k=0;k&amp;lt;12;k++)&lt;br /&gt;
 //    if (expand[a] &amp;amp; pow2[k]) recon |= pow2[bc[k]];&lt;br /&gt;
&lt;br /&gt;
//  for (k=0;k&amp;lt;14;k++)&lt;br /&gt;
//     if (b &amp;amp; pow2[k]) recon |= pow2[ac[k]];&lt;br /&gt;
&lt;br /&gt;
//  printf(&amp;quot;Reconstituted permutation: %lo (= %ld in decimal)\n&amp;quot;, recon, recon);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  			/* now compute the a,b,c,d stats */&lt;br /&gt;
&lt;br /&gt;
  int s[4];&lt;br /&gt;
  long tmpset = forbidden;&lt;br /&gt;
&lt;br /&gt;
	s[0]=s[1]=s[2]=s[3]=0;&lt;br /&gt;
&lt;br /&gt;
	for (j=0; j &amp;lt; 27; j++)&lt;br /&gt;
		{&lt;br /&gt;
			if (tmpset &amp;amp; 1l) s[stat[j]]++;&lt;br /&gt;
			tmpset /= 2;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  int feasible[9][13][7][2];   // a partial list of which (a,b,c,d) are feasible&lt;br /&gt;
&lt;br /&gt;
  for (i=0;i&amp;lt;9; i++)&lt;br /&gt;
	  for (j=0;j&amp;lt;13;j++)&lt;br /&gt;
		  for(k=0;k&amp;lt;7;k++)&lt;br /&gt;
			  for(l=0;l&amp;lt;2;l++)&lt;br /&gt;
				  feasible[i][j][k][l]=0;&lt;br /&gt;
&lt;br /&gt;
  for (i=0; i&amp;lt;NUM_ACD;i++)&lt;br /&gt;
	  if (table[a][b][i] != -1)&lt;br /&gt;
		 {&lt;br /&gt;
//		  printf(&amp;quot;[%d %d %d %d] &amp;quot;, a_base[i], (int) table[a][b][i], c_base[i], d_base[i]);&lt;br /&gt;
		  feasible[a_base[i]][(int) table[a][b][i]][c_base[i]][d_base[i]] = 1;&lt;br /&gt;
		 }&lt;br /&gt;
&lt;br /&gt;
  // do the easy cases with only one non-zero&lt;br /&gt;
&lt;br /&gt;
  feasible[4-s[0]][0][0][0] = 1;&lt;br /&gt;
  feasible[0][12-s[1]][0][0] = 1;&lt;br /&gt;
  feasible[0][0][6-s[2]][0] = 1;&lt;br /&gt;
  feasible[0][0][0][1-s[3]] = 1;&lt;br /&gt;
&lt;br /&gt;
  // fill in the (1,b,c,d) guys&lt;br /&gt;
&lt;br /&gt;
  if (s[0] &amp;lt; 8)&lt;br /&gt;
	  for (j=0; j&amp;lt;13;j++)&lt;br /&gt;
		  for (k=0;k&amp;lt;7;k++)&lt;br /&gt;
			  for (l=0;l&amp;lt;2;l++)&lt;br /&gt;
				  if (feasible[0][j][k][l]) feasible[1][j][k][l] = 1;&lt;br /&gt;
&lt;br /&gt;
  // fill in the (0,1,c,d) guys&lt;br /&gt;
&lt;br /&gt;
  if (s[1] &amp;lt; 12)&lt;br /&gt;
		  for (k=0;k&amp;lt;7;k++)&lt;br /&gt;
			  for (l=0;l&amp;lt;2;l++)&lt;br /&gt;
				  if (feasible[0][0][k][l]) feasible[0][1][k][l] = 1;&lt;br /&gt;
&lt;br /&gt;
  // fill in the (0,0,1,1) guys&lt;br /&gt;
&lt;br /&gt;
  if (s[2] &amp;lt; 6)&lt;br /&gt;
				  if (feasible[0][0][0][1]) feasible[0][0][1][l] = 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // eliminate non-optimals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  for (i=0;i&amp;lt;9; i++)&lt;br /&gt;
	  for (j=0;j&amp;lt;13;j++)&lt;br /&gt;
		  for(k=0;k&amp;lt;7;k++)&lt;br /&gt;
			  for(l=0;l&amp;lt;2;l++)&lt;br /&gt;
				  if (feasible[i][j][k][l])&lt;br /&gt;
						  for (x=0; x&amp;lt;= i; x++)&lt;br /&gt;
							  for (y=0; y&amp;lt;= j; y++)&lt;br /&gt;
								  for (z=0; z&amp;lt;= k; z++)&lt;br /&gt;
									  for (w=0; w&amp;lt;=l; w++)&lt;br /&gt;
										  if (x+y+z+w &amp;lt; i+j+k+l) feasible[x][y][z][w] = 0;&lt;br /&gt;
&lt;br /&gt;
  int count = 0;&lt;br /&gt;
&lt;br /&gt;
  short int labels[MAX_PARETO];&lt;br /&gt;
&lt;br /&gt;
  for (i=0;i&amp;lt;MAX_PARETO;i++) labels[i]=-1;&lt;br /&gt;
&lt;br /&gt;
  for (i=0;i&amp;lt;9; i++)&lt;br /&gt;
	  for (j=0;j&amp;lt;13;j++)&lt;br /&gt;
		  for(k=0;k&amp;lt;7;k++)&lt;br /&gt;
			  for(l=0;l&amp;lt;2;l++)&lt;br /&gt;
				  if (feasible[i][j][k][l])&lt;br /&gt;
					 {&lt;br /&gt;
						 labels[count] = statlabel[i][j][k][l];&lt;br /&gt;
//						 printf(&amp;quot;(%d,%d,%d,%d) &amp;quot;,i,j,k,l);&lt;br /&gt;
//						 printf(&amp;quot;%d &amp;quot;, statlabel[i][j][k][l]);&lt;br /&gt;
						 count++;&lt;br /&gt;
					 }&lt;br /&gt;
&lt;br /&gt;
  fwrite(labels, sizeof(short int), MAX_PARETO, newtable);&lt;br /&gt;
&lt;br /&gt;
//  printf(&amp;quot;\nTest complete.\n&amp;quot;);&lt;br /&gt;
  return count;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   int i,j,k,l,m;&lt;br /&gt;
   long forb, forb_base;&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;sizeof(short int)=%d &amp;quot;, sizeof(short int));&lt;br /&gt;
&lt;br /&gt;
   srand ( time(NULL) );&lt;br /&gt;
&lt;br /&gt;
   buildperms();&lt;br /&gt;
   buildhash();&lt;br /&gt;
   init_pareto();&lt;br /&gt;
   init_numstat();&lt;br /&gt;
//   init_data();&lt;br /&gt;
   read_lookup();&lt;br /&gt;
&lt;br /&gt;
   newtable = fopen(&amp;quot;newlookup.dat&amp;quot;,&amp;quot;wb&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	int maxcount=0, count;&lt;br /&gt;
	  for (i=0; i&amp;lt;144; i++)&lt;br /&gt;
		{&lt;br /&gt;
		  printf(&amp;quot;%d &amp;quot;,maxcount);&lt;br /&gt;
		  for (j=0; j&amp;lt;16384; j++)&lt;br /&gt;
			  {&lt;br /&gt;
			   forb=0;&lt;br /&gt;
               for (k=0;k&amp;lt;12;k++)&lt;br /&gt;
                 if (expand[i] &amp;amp; pow2[k]) forb |= pow2[bc[k]];&lt;br /&gt;
               for (k=0;k&amp;lt;14;k++)&lt;br /&gt;
			     if (j &amp;amp; pow2[k]) forb |= pow2[ac[k]];&lt;br /&gt;
			   count = test(forb);&lt;br /&gt;
		       if (maxcount &amp;lt; count) maxcount=count;&lt;br /&gt;
		      }&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
   fclose(newtable);&lt;br /&gt;
//   for (i=0; i&amp;lt;1000; i++)&lt;br /&gt;
//	   {&lt;br /&gt;
//		   forb = rand()%32768 + 32768l * (rand()%4096);&lt;br /&gt;
//		   printf(&amp;quot;%lo -&amp;gt; %d &amp;quot;, forb, test(forb));&lt;br /&gt;
 //      }&lt;br /&gt;
//   test(110555621l);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Teorth</name></author>
	</entry>
</feed>