#include<bits/stdc++.h>
using namespace std ;
#define F first
#define S second
const int Q = 1e4+5 ;
const int N = 67000005 ;
vector<pair<pair<int,int>,pair<int,int>>> edges = {
{{0,0},{1,0}} , {{0,0},{1,1}} , {{0,0},{1,2}} , {{0,0},{2,1}} ,
{{0,1},{0,2}} , {{0,1},{1,0}} , {{0,1},{1,1}} , {{0,1},{1,2}} , {{0,1},{2,0}} , {{0,1},{2,2}} ,
{{0,2},{1,0}} , {{0,2},{1,1}} , {{0,2},{1,2}} , {{0,2},{2,1}} ,
{{1,0},{1,1}} , {{1,0},{2,1}} , {{1,0},{2,2}} ,
{{1,1},{1,2}} , {{1,1},{2,0}} , {{1,1},{2,1}} , {{1,1},{2,2}} ,
{{1,2},{2,0}} , {{1,2},{2,1}} , {{1,2},{2,2}} ,
{{2,0},{2,1}} ,
{{2,1},{2,2}}
} ;
vector<pair<pair<int,int>,pair<int,int>>> v ;
vector<pair<pair<int,int>,pair<int,int>>> BuildPattern(int n){
vector<pair<pair<int,int>,pair<int,int>>> ans ;
ans.push_back({{0,0},{0,1}}) ;
for(int i=0 ; i<26 ; i++){
if((n>>i)&1) ans.push_back(edges[i]) ;
}
return ans ;
}
pair<int,int> f(int x , int y){
if(x==0 && y==0) return {2,0} ;
if(x==0 && y==1) return {1,0} ;
if(x==0 && y==2) return {0,0} ;
if(x==1 && y==0) return {2,1} ;
if(x==1 && y==1) return {1,1} ;
if(x==1 && y==2) return {0,1} ;
if(x==2 && y==0) return {2,2} ;
if(x==2 && y==1) return {1,2} ;
if(x==2 && y==2) return {0,2} ;
}
void rotate(){
for(int i=0 ; i<v.size() ; i++){
pair<int,int> a = v[i].F , b = v[i].S ;
a = f(a.F,a.S) , b = f(b.F,b.S) ;
v[i] = {a,b} ;
}
}
int GetCardNumber(vector<pair<pair<int,int>,pair<int,int>>> v1){
v = v1 ;
int a = 0 , b = 0 , c = 0 , d = 0 ;
pair<pair<int,int>,pair<int,int>> pa = {{0,0},{0,1}} , pb = {{0,2},{1,2}} , pc = {{2,1},{2,2}} , pd = {{1,0},{2,0}} ;
for(auto it:v){
auto it1 = it ; swap(it1.F,it1.S) ;
if(it==pa || it1==pa) a = 1 ;
if(it==pb || it1==pb) b = 1 ;
if(it==pc || it1==pc) c = 1 ;
if(it==pd || it1==pd) d = 1 ;
}
if(!a && b) rotate() ;
else if(!b && c) rotate() , rotate() ;
else if(!c && d) rotate() , rotate() , rotate() ;
int ans = 0 ;
for(auto it:v){
auto it1 = it ; swap(it1.F,it1.S) ;
for(int i=0 ; i<26 ; i++){
if(edges[i]==it || edges[i]==it1) ans|=(1<<i) ;
}
}
return ans ;
}
/*
int main(){
for(int i=1 ; i<=25 ; i++) cout << GetCardNumber(BuildPattern(i)) << '\n' ; //
return 0 ;
}
*/