#include <iostream>
using namespace std;
void asdf(int L, int R)
{
 int arr[100][100];
 
 int num=1;
 
 int i,j;
 int bl = true;
 
 for(i=0; bl=true&&(i<(L/2) + 1) ; i++)
 
 {
  for(j=i;bl=true&&(j<L-i-1);j++)
  
  {
   arr[i][j] = num++;
   if (arr[i][j] == L * R)
   {
     bl=false;
   }
  }

  for(j=i;bl=true&&(j<R-i);j++)
  {
   arr[j][L-i-1] = num++;
   if (arr[j][L-i-1] == L * R)
   {
     bl=false;
   }
  }

  for(j=L-i-2;bl=true&&(j>=i);j--)
  {
   arr[R-i-1][j] = num++;
   if (arr[R-i-1][j] == L * R)
   {
     bl=false;
   }
  }

  for(j=R-i-2;bl=true&&(j>=i+1);j--)
  {
  
   arr[j][i] = num++;
   if (arr[j][i] == L * R)
   {
    bl=false;
   }
  }


 }

cout << L * R<<"ddd" << endl;
for(i=0;i<R;i++)
 
 {
 
  for(j=0;j<L;j++)
  {
  
   cout << arr[i][j] << "   "  ;
  
  }
  
  cout << endl;
 }
 
 cout << endl;
}

int main()
{int n;
int a;
while(1)
{

 cin >> n >> a;
 asdf(n,a);
 break;
}

 return 0;
}


일단 이거 달팽이고 맨처음에 2개수 입력받아서 행열 하는건데

복사해서 해보면 알겠지만 맨 마지막에 자꾸 수가 겹쳐. 원래있던 수에 겹쳐쓰기돼서 이후의 수가 나오는데
그래서 맨 마지막에 브레이크걸려고 if에 쓴건데
만약 array의 수가 행 * 열(예를들면 맨첨에 6,8 입력했으면 48) 의 수가 나오면 false넣어서 for에서 전부다 밖으로 탈출하게 하려고 한건데
왜 정상적으로 안되는거지.. 형들좀 도와줘요

플밍 초보라 너무힘듬..