Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd.
InputThe only line contains odd integer n (1 ≤ n ≤ 49).OutputPrint n lines with n integers. All the integers should be different and from 1 to n2. The sum in each row, column and both main diagonals should be odd.Examples
Input
1
Output
1
Input
3
Output
2 1 4
3 5 7
6 9 8
#include <iostream>
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
long long int s[50][50];
long long int n[3000];
long long int m[3000];
int main()
{long long int a,i,x=0,y=0,t,k,j;cin >> a;t=(a/2)+1;k=(a/2)+1;memset(s,0,sizeof(s));for(i=1; i<=a*a; i++){if(i%2==0){n[++x]=i;}else{m[++y]=i;}}x=0;y=0;for(i=1; i<=a/2; i++){for(j=t; j<=k; j++){s[i][j]=m[++y];}t--;k++;}t++;k--;for(i=1; i<=a; i++){s[(a/2)+1][i]=m[++y];}for(i=(a/2)+2; i<=a; i++){for(j=t; j<=k; j++){s[i][j]=m[++y];}t++;k--;}for(i=1; i<=a; i++){for(j=1; j<=a; j++){if(s[i][j]==0){s[i][j]=n[++x];}}}for(i=1; i<=a; i++){for(j=1; j<=a; j++){if(j==a){cout << s[i][j] << endl;}else{cout << s[i][j] << " ";}}}return 0;
}