#include <iostream>
 
using namespace std;
 
int main()
{
    int row_col_size , K_size , result_row , result_column;
    cout<< "Upisi broj redaka i stupaca  N? : ";
    cin>> row_col_size;
 
    cout<<  endl << "Upisi velicinu matrice koja se vrti  K(1 - 1000)?: ";
    cin>> K_size;
 
    cout<< endl << "Upisi broj trazenog retka  i?";
    cin>> result_row;
 
    cout<< endl << "Upisi broj trazenog stupca j?";
    cin>> result_column;
 
 
    int array_size = row_col_size* row_col_size;
 
    int ROW_MAX = row_col_size;
    int COL_MAX = row_col_size;
    int ROW_MIN = 0;
    int COL_MIN = 0;
    int row = 0;
    int column = 0;
    int K = 0;
 
    int** data;
    data = new int*[row_col_size];
    for(int i=0 ; i < row_col_size; ++i)
    {
        data[i] = new int[row_col_size];
    }
 
    bool isArrayFinished = false;
 
    while(!isArrayFinished )
    {
        static int counter = 0;
 
        if(row == ROW_MIN && column < COL_MAX)
        {
            data[row][column] = K;
            column++;
            K++;
        }
 
        else
        if(column == COL_MAX && row < ROW_MAX-1)
        {
            row++;
            data[row][column-1] = K;
            K++;
        }
 
        else
        if(row == ROW_MAX-1 && column > COL_MIN+1)
        {
            column--;
            data[row][column-1] = K;
            K++;
        }
 
        else
        if(column == COL_MIN+1 && row > ROW_MIN+1)
        {
            data[row-1][column-1] = K;
            row--;
            K++;
        }
 
        else
        {
            ROW_MAX--;
            COL_MAX--;
            ROW_MIN++;
            COL_MIN++;
            counter--;
        }
 
        counter++;
        
        if(counter == array_size)
        isArrayFinished = true;
 
        if(K == K_size)
        K = 0;
    }
 
    //otkomentiraj ako ne zelis ispis  /*
   /* cout<< endl;
    for(int i=0 ; i < row_col_size; i++)
    {
        for(int j=0 ; j < row_col_size; j++)
        {
            cout<< "  " << data[i][j];
        }
 
        cout<< endl;
    } */
    // */
 
    cout<< endl << "Trazeni broj : " <<  data[result_row-1][result_column-1];
 
 
    for(int i=0 ; i < row_col_size; ++i)
    {
        delete []data[i];
    }
    delete []data;
 
    return 0;
}