class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int k = 1;
vector<vector<int>> matrix(n, vector<int>(n));
int u = 0, r = n - 1, d = n - 1, l = 0;
while (true) {
for (int col = l; col <= r; col++) matrix[u][col] = k++;
if (++u > d) break;
for (int row = u; row <= d; row++) matrix[row][r] = k++;
if (--r < l) break;
for (int col = r; col >= l; col--) matrix[d][col] = k++;
if (--d < u) break;
for (int row = d; row >= u; row--) matrix[row][l] = k++;
if (++l > r) break;
}
return matrix;
}
};