Skip to content

Instantly share code, notes, and snippets.

@spaanse
Last active May 31, 2021 10:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spaanse/4369051eec0b6da1aad29d243a3049bb to your computer and use it in GitHub Desktop.
Save spaanse/4369051eec0b6da1aad29d243a3049bb to your computer and use it in GitHub Desktop.
Tiling hypercube unfoldings
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef int64_t ll;
int main() {
// 261 unfoldings of a hypercube
vector<vvi> unfoldings = {
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -2}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 0, -2}, { 0, 1, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 1, 0, 0}, { 1, 1, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, 0}, {-2, 0, 0}, { 1, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 0, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 1, 0}, { 0, 2, 0}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 1, -1}, {-1, 0, 0}, {-2, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, -1, -3}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 1, 0}, { 0, 2, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, { 0, 0, 2}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, { 0, -1, 1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 1, 0, 0}, { 2, 0, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 0, -2}, {-1, 0, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, 0}, {-1, -1, 0}, { 1, -1, 0}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 2, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, -1, 1}, { 0, 1, 0}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 1, 0}, { 0, 2, 0}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, { 0, 1, 0}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 1, -1}, {-1, 0, 0}, {-2, 0, 0}, {-3, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -2, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 0, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, {-1, -1, 0}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, -2, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, -2, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, { 1, 0, 1}, { 1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 2, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -2}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, -1, 1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, -2, -1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 0, 2, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, 0}, {-2, 0, 0}, { 0, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, { 0, -1, 1}, {-1, 0, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -3}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, 0}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, -3, -1}, {-1, 0, 0}, {-2, 0, 0}, {-3, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, 0}, {-1, -1, 0}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -2}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, -2, -1}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 1, 0, 0}, { 1, 0, 1}, { 2, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, -1, -3}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -2, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 1, 0, 0}, { 1, 1, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 1, 0, 0}, { 2, 0, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, -1, -1}, { 0, 0, 1}, { 0, 1, 1}, { 0, 1, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 0, 1, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 2, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, { 0, -1, 1}, { 0, 1, 0}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, 0}, {-1, -1, 0}, {-2, -1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, 0}, {-1, 0, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 0, 0}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, 0}, {-2, 0, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -1, -2}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 1, 0, 0}, { 2, 0, 0}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 0, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, 0}, {-2, 0, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -2}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, {-1, -1, 0}, { 1, 0, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, 0}, {-1, -1, 0}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -2, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -1}, {-1, 0, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -1}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, 0}, {-1, -1, 0}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -1}, { 0, 1, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, -1, 0}, { 0, 1, 0}, {-1, 0, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, 0}, {-1, -1, 0}, { 0, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, 1}, { 0, -1, 1}, {-1, 0, 0}, {-1, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -2, -1}, { 1, 0, 0}, { 1, 1, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, -1, -1}, { 0, 0, 1}, { 0, 0, 2}, { 0, 1, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, 0}, {-2, 0, 0}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, 1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 0, 2}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, 0}, {-2, 0, 0}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, -1, -1}, { 0, 1, 0}, { 0, 1, 1}, { 0, 2, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, -1}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 0, 1, 0}, { 0, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, 0, 0}, {-2, 0, 0}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, 0, -3}, { 0, -1, -1}, {-1, 0, 0}, {-1, 1, 0}, {-1, 2, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 0, 1}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -2}, { 0, 0, 1}, { 0, 1, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, -1}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 0, 2}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 0, 0, -2}, { 0, 1, 0}, { 0, 1, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, {-1, -2, -1}, { 1, 0, 0}, { 2, 0, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -2, -1}, { 1, 0, 0}, { 2, 0, 0}, { 2, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 1, 0, 0}, { 1, 0, 1}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 1, 0, 1}, { 0, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -2}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, -1, -2}, { 0, 0, 1}, { 1, 0, 1}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, {-1, 1, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, {-1, -1, -2}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, { 0, 0, 1}, { 0, 1, 1}, {-1, 0, 1}, { 1, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -2, -1}, { 0, 0, -2}, { 0, 1, 0}, {-1, 1, 0}, { 1, 1, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, { 0, 1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 0, 1, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, -1}, { 0, 1, 0}, { 1, 1, 0}, { 0, 0, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -2}, {-1, 0, -1}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, { 0, -1, -2}, {-1, -1, -1}, { 1, 0, 0}, { 1, 1, 0}, { 1, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, -1}, { 0, 1, 0}, { 0, 2, 0}, { 0, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, {-1, 0, 0}, {-1, 0, 1}, { 0, 1, 0}, { 1, 0, 0}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, -1, -1}, {-1, -1, -1}, { 1, 0, 0}, { 2, 0, 0}, { 0, 0, 1}, { 0, 1, 1}},
{{ 0, 0, 0}, { 0, 0, -1}, { 0, 0, -2}, { 0, -1, -1}, { 0, 1, 0}, {-1, 1, 0}, { 0, 0, 1}, { 1, 0, 0}}
};
int numFound = 0;
int number = 1;
// loop over all unfoldings
for(vvi coord : unfoldings) {
bool found = false;
cout << setw(3) << number++ << ": ";
// coefficent for 1st axis
for (int a = 1; a < 16 and not found; a++) {
// coefficient for second axis
for (int b = 1; b < 16 and not found; b++) {
// coefficient for third axis
for (int c = 1; c < 16 and not found; c++) {
// store which values mod 16 are covered, for each of the 8=2^3 reflections
vector<bitset<16>> filled(8);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
int sum = 0;
// flip along 1st axis
if (j&1) sum -= a*coord[i][0];
else sum += a*coord[i][0];
// flip along 2nd axis
if (j&2) sum -= b*coord[i][1];
else sum += b*coord[i][1];
// flip along 3rd axis
if (j&4) sum -= c*coord[i][2];
else sum += c*coord[i][2];
sum %= 16;
if (sum < 0) sum += 16;
filled[j].set(sum);
}
}
// The pattern we need to fill the gaps
bitset<16> inverse = filled[0];
inverse.flip();
// Rotate until lexicographically smallest (corresponds to translation of the unfolding)
bitset<16> copy = inverse;
for (int j = 0; j < 16; j++) {
copy = (copy << 1) | (copy >> 15);
if (copy.to_ulong() < inverse.to_ulong()) inverse = copy;
}
// Go over all reflections
for (int i = 0; i < 8 and not found; i++) {
// Rotate until lexicographically smallest
copy = filled[i];
for (int j = 0; j < 16; j++) {
copy = (copy << 1) | (copy >> 15);
if (copy.to_ulong() < filled[i].to_ulong()) filled[i] = copy;
}
// If it fits we have found a tiling
if (inverse == filled[i]) {
cout << a << " " << b << " " << c << " (with " << i << ")" << endl;
found = true;
}
}
}
}
}
if (not found) {
cout << "no solution" << endl;
} else {
numFound++;
}
}
// Print for how many of the unfoldings we found a solution
cout << "Found solutions for " << numFound << "/" << unfoldings.size() << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment