vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty() || matrix[0].empty()) return res;
int rend=matrix.size()-1;
int cend=matrix[0].size()-1;
while( !(rstart> rend || cstart>cend) )
if(rstart== rend && cstart == cend)
res.push_back(matrix[rstart][cstart]);
for(int i=cstart;i<=cend;i++)
res.push_back(matrix[rstart][i]);
for(int i=rstart;i<=rend;i++)
res.push_back(matrix[i][cstart]);
for(int j=cstart;j<cend;j++)
res.push_back(matrix[rstart][j]);
for(int i=rstart;i<=rend;i++)
res.push_back(matrix[i][cend]);
for(int j=cend-1;j>=cstart;j--)
res.push_back(matrix[rend][j]);
for(int i=rend-1;i>rstart;i--)
res.push_back(matrix[i][cstart]);