#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
//int rows[16][4] = {{1,1,1,1},{1,1,1,-1},{1,1,-1,1},{1,1,-1,-1},{1,-1,1,1},{1,-1,1,-1},{1,-1,-1,1},{1,-1,-1,-1},{-1,1,1,1},{-1,1,1,-1},{-1,1,-1,1},{-1,1,-1,-1},{-1,-1,1,1},{-1,-1,1,-1},{-1,-1,-1,1},{-1,-1,-1,-1}};
int a[8] = {-1,1,1,1,1,1,1,1}, b[8] = {1,-1,1,1,1,1,1,1}, c[8] = {1,1,-1,1,1,1,1,1}, d[8] = {1,1,1,-1,1,1,1,1},
i[8] = {1,1,1,1,-1,1,1,1}, j[8] = {1,1,1,1,1,-1,1,1}, k[8] = {1,1,1,1,1,1,-1,1}, l[8] = {1,1,1,1,1,1,1,-1}, x[8];
int y;
pair<string,int> strint;
//int i = 8, j = 15, k = 15, l=15;
string z;
map<string,int> mult;
map<string,int>::iterator itr;
//for(int m=0; m<4; m++)
//{
// x[m] = 0;
// (i & (2^m)) == 1 ? a[m] = 1 : a[m] = -1;
// (j & (2^m)) == 1 ? b[m] = 1 : b[m] = -1;
// (k & (2^m)) == 1 ? c[m] = 1 : c[m] = -1;
// (l & (2^m)) == 1 ? d[m] = 1 : d[m] = -1;
// }
for(int e=0; e<8; e++)
{
for(int f=0; f<8; f++)
{
for(int g=0; g<8; g++)
{
for(int h=0; h<8; h++)
{
for(int q=0; q<8; q++)
{
for(int r=0; r<8; r++)
{
for(int s=0; s<8; s++)
{
for(int t=0; t<8; t++)
{
for(int m=0; m<8; m++)
x[m] = 0;
x[e] += 1;
x[f] += 1;
x[g] += 1;
x[h] += 1;
x[q] += 1;
x[r] += 1;
x[s] += 1;
x[t] += 1;
z = "";
for(int m=0; m<8; m++)
z += to_string(x[m]);
itr = mult.find(z);
if (itr != mult.end())
{
y = itr->second;
y += a[e]*b[f]*c[g]*d[h]*i[q]*j[r]*k[s]*l[t];
itr->second = y;
}
else
{
y = a[e]*b[f]*c[g]*d[h]*i[q]*j[r]*k[s]*l[t];
strint = make_pair(z,y);
mult.insert(strint);
}
}
}
}
}
}}}}
for (itr = mult.begin(); itr != mult.end(); itr++)
{
cout << itr->first << " " << itr->second << endl;
}
return 0;
}