import java.util.*;
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] arr = new int[rows][columns];
int value = 1;
for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++) { arr[i][j] = value++; }
}
for(int i=0; i<queries.length; i++) {
int x1 = queries[i][0]-1; int y1 = queries[i][1]-1;
int x2 = queries[i][2]-1; int y2 = queries[i][3]-1;
answer[i] = min(arr, x1, y1, x2, y2);
int x1y2 = arr[x1][y2];
int x2y1 = arr[x2][y1];
int x2y2 = arr[x2][y2];
for(int j=y2; j>y1; j--) { arr[x1][j] = arr[x1][j-1]; }
for(int j=x2; j>x1+1; j--) { arr[j][y2] = arr[j-1][y2]; }
for(int j=y1; j<y2-1; j++) { arr[x2][j] = arr[x2][j+1]; }
for(int j=x1; j<x2-1; j++) { arr[j][y1] = arr[j+1][y1]; }
arr[x1+1][y2] = x1y2;
arr[x2-1][y1] = x2y1;
arr[x2][y2-1] = x2y2;
}
return answer;
}
public int min(int[][] arr, int x1, int y1, int x2, int y2) {
int min = Integer.MAX_VALUE;
for(int i=x1; i<=x2; i++) {
min = Math.min(min, arr[i][y1]);
min = Math.min(min, arr[i][y2]);
}
for(int i=y1; i<=y2; i++) {
min = Math.min(min, arr[x1][i]);
min = Math.min(min, arr[x2][i]);
}
return min;
}
}