class Solution {
public:
vector<vector<int> > Matrix(int n) {
vector<vector<int>> f(n,vector<int>(n,0));
vector<vector<int>> ans(n,vector<int>(n));
int i = 1,x = 0,y = 0;
while(i<=n*n)
{
if(!f[x][y])
{
ans[x][y] = i;
f[x][y] = 1;
i++;
}
while(!f[x][y+1] && y+1<n) {
y++;
ans[x][y] = i;
f[x][y] = 1;
i++;
}
while(!f[x+1][y] && x+1<n) {
x++;
ans[x][y] = i;
f[x][y] = 1;
i++;
}
while(!f[x][y-1] && y-1>=0){
y--;
ans[x][y] = i;
f[x][y] = 1;
i++;
}
while(!f[x-1][y] && x-1>=0) {
x--;
ans[x][y] = i;
f[x][y] = 1;
i++;
}
}
return ans;
}
};