Why my code is showing 1 extra number again

public class App10_SpiralPrintClockWise {

public static void print(int[][] arr) {
	int top = 0;
	int bottom = arr.length - 1;
	int left = 0;
	int right = arr[top].length - 1;
	int dir = 1;

	while (left <= right && top <= bottom) {
		if (dir == 1) {
			for (int pointer = left; pointer <= right; pointer++) {
				System.out.print(arr[top][pointer] + " ");

			}
			System.out.println();
			dir = 2;
			top++;
		}
		if (dir == 2) {
			for (int pointer = top; pointer <= bottom; pointer++) {
				System.out.print(arr[pointer][right] + " ");

			}
			System.out.println();
			dir = 3;
			right--;
		}
		if (dir == 3) {
			for (int pointer = right; pointer >= left; pointer--) {
				System.out.print(arr[bottom][pointer] + ", ");

			}
			System.out.println();
			bottom--;
			dir = 4;
		}
		if (dir == 4) {

			for (int pointer = bottom; pointer >= top; pointer--) {
				System.out.print(arr[pointer][right] + ", ");

			}
		}
		System.out.println();
		dir = 1;
		left++;
	
	}
	System.out.println();

	System.out.println("END");

}

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int M = sc.nextInt();
	int N = sc.nextInt();

	if ((M > 0 && N > 0) && (M < 10 && N < 10)) {
		int[][] arr = new int[M][N];

		for (int row = 0; row < arr.length; row++) {
			for (int col = 0; col < N; col++) {
				arr[row][col] = sc.nextInt();
			}
		}
		print(arr);
	}

}

hey @nigamshubham1998 just a change
if (dir == 4) {

			for (int pointer = bottom; pointer >= top; pointer--) {
				System.out.print(arr[pointer][left] + ", ");

			}
		}


try for this input
3 4
1 2 3 4
1 2 3 4
1 2 3 4
your code Gives : 1, 2, 3, 4, 4, 4, 3, 2, 1, 1, 2, 3, 2, END
its correct output is : 1, 2, 3, 4, 4, 4, 3, 2, 1, 1, 2, 3, END