/*--.--.--.--.--.--.--.--.--.--.--.--.--* * By-Anshal Dwivedi * * IT , MNNIT Allahabad * * anshaldwivedi@gmail.com * *--.--.--.--.--.--.--.--.--.--.--.--.--*/ #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define mp make_pair #define pb push #define X first #define Y second #define null NULL #define ll long long #define tr(c, itr) for(itr = (c).begin(); itr != (c).end(); itr++) #define present(container, element) (container.find(element) != container.end()) //for set,map,etc #define cpresent(container, element) (find(all(container),element) != container.end()) //for vectors #define all(c) c.begin(),c.end() //eg sort(all(v)); //Initialization #define clr(a) memset(a,0,sizeof(a)) #define ini(a) memset(a,-1,sizeof(a)) //Input Output #define inp(n) scanf("%d",&n) #define inp2(n,m) inp(n), inp(m) #define ins(s) scanf("%s",s) #define inc(n) scanf("%c",&n) #define inlf(n) scanf("%lf",&n) #define inll(n) scanf("%lld",&n) #define inll2(n,m) scanf("%lld%lld",&n,&m) #define out(n) printf("%d\n",n) #define out2(n,m) printf("%d %d\n",n,m) #define outs(d) printf("%s\n",d) #define sout(n) printf("%d ",n) #define outll(n) printf("%lld\n",n) #define soutll(n) printf("%lld ",n) #define outll2(n,m) printf("%lld %lld\n",n,m) #define nl printf("\n"); //loops #define rep(i,n) for(int i=0;i=a;i--) //const #define mod 1000000007 #define MOD_INV 1000000006 #define MAX 100009 #define INF 999999999 #define PI 3.14159265358979323846264338327 ll modpow(ll base, ll exp, ll modulus) {base %= modulus;ll result = 1;while (exp > 0){if (exp & 1) result = (result * base) % modulus; base = (base * base) % modulus;exp >>= 1;}return result;} int vis[26][26]; int n; bool isVal(int x,int y){ if(x<=0||y<=0) return false; if(x>n||y>n) return false; return true; } void bfs(int a,int b){ ini(vis); if(a==1&&b==3){ int k=1; } vis[1][1]=0; queue > q; q.pb(mp(1,1)); while(!q.empty()){ int sx=q.front().X; int sy=q.front().Y; q.pop(); if(isVal(sx+a,sy+b)){ if(vis[sx+a][sy+b]==-1||vis[sx+a][sy+b]>vis[sx][sy]+1){ vis[sx+a][sy+b]=vis[sx][sy]+1; q.pb(mp(sx+a,sy+b)); } } if(isVal(sx+a,sy-b)){ if(vis[sx+a][sy-b]==-1||vis[sx+a][sy-b]>vis[sx][sy]+1){ vis[sx+a][sy-b]=vis[sx][sy]+1; q.pb(mp(sx+a,sy-b)); } } if(isVal(sx-a,sy+b)){ if(vis[sx-a][sy+b]==-1||vis[sx-a][sy+b]>vis[sx][sy]+1){ vis[sx-a][sy+b]=vis[sx][sy]+1; q.pb(mp(sx-a,sy+b)); } } if(isVal(sx-a,sy-b)){ if(vis[sx-a][sy-b]==-1||vis[sx-a][sy-b]>vis[sx][sy]+1){ vis[sx-a][sy-b]=vis[sx][sy]+1; q.pb(mp(sx-a,sy-b)); } } int tmp=a; a=b; b=tmp; if(isVal(sx+a,sy+b)){ if(vis[sx+a][sy+b]==-1||vis[sx+a][sy+b]>vis[sx][sy]+1){ vis[sx+a][sy+b]=vis[sx][sy]+1; q.pb(mp(sx+a,sy+b)); } } if(isVal(sx+a,sy-b)){ if(vis[sx+a][sy-b]==-1||vis[sx+a][sy-b]>vis[sx][sy]+1){ vis[sx+a][sy-b]=vis[sx][sy]+1; q.pb(mp(sx+a,sy-b)); } } if(isVal(sx-a,sy+b)){ if(vis[sx-a][sy+b]==-1||vis[sx-a][sy+b]>vis[sx][sy]+1){ vis[sx-a][sy+b]=vis[sx][sy]+1; q.pb(mp(sx-a,sy+b)); } } if(isVal(sx-a,sy-b)){ if(vis[sx-a][sy-b]==-1||vis[sx-a][sy-b]>vis[sx][sy]+1){ vis[sx-a][sy-b]=vis[sx][sy]+1; q.pb(mp(sx-a,sy-b)); } } tmp=a; a=b; b=tmp; } } int main(){ cin>>n; for(int i=1;i