/*
C++ program to calculate A118986
Author: M. Wang
Email Address: atvv@foxmail.com
Compiler: MinGW compiler
Compiler Version: v4.9.2 (tdm64-1)
OEIS URL: https://oeis.org/A118986
Output:
2
3
6
14
46
176
908
5802
...
*/
#include <iostream>
#include <ctime>
#include <cassert>
#include <cstring>
#include <vector>
#include <string>
#include <set>
#include <map>
using namespace std;

#define min(a,b) (((a)<(b))?(a):(b))
#define max(a,b) (((a)>(b))?(a):(b))
#define min_(a,b) {if(a>(b))a=(b);}
#define max_(a,b) {if(a<(b))a=(b);}

#if defined _MSC_VER || defined __MINGW32__
#define I64 "I64"
#else
#define __int64 long long
#define I64 "ll"
#endif

set<int> st;
int row[333][333];
unsigned n;

int str[333];
int invcnt=1;
int detval;

void per_dfs(int k){
	if(k!=n){
		int i;
		if(row[k][str[k]])per_dfs(k+1);
		for(i=k+1;i<n;i++){
			if(row[k][str[i]]){
				swap(str[i],str[k]);
				per_dfs(k+1);
				swap(str[i],str[k]);
			}
		}
	}
	else{
		detval+=invcnt;
	}
}
void det(){
	detval=0;
	per_dfs(0);
	st.insert(detval);
}
void dfs(int rid,int cid){
	if(cid>=n){
		rid++;
		if(rid>=n){
			det();
			return;
		}
		cid=rid;
	}
	row[rid][cid]=row[cid][rid]=0;
	dfs(rid,cid+1);
	row[rid][cid]=row[cid][rid]=1;
	dfs(rid,cid+1);
}
int main(int argc,char ** argv){
	for(n=1;;n++){
		st.clear();
		int i;
		for(i=0;i<n;i++){
			str[i]=i;
		}
		dfs(0,0);
		printf("%u\n",st.size());
	}
	return 0;
}