Hey guys, I am trying to complete a c++ Knight's tour program. I am getting full output but the tour stops after the first move so my output is this

00000000
00000000
00000000
00000000
00000000
00000000
00000000

00000000
00000200
00000000
00001000
00000000
00000000
00000000
00000000

I think my problem is my if else statement cluster but I can't seem to determine what went wrong. I have a sneaking suspicion it has something to do with syntax. Here is my code.

Code:
#include <iostream>
using namespace std;

	const int rows = 8;
	const int columns = 8;
	void printArray( int[][columns]);


int main ()
{
	int i, j;

	int counter = 1;
	int moveNumber = 1;
	int currentRow = 3;
	int currentColumn = 4;
	int pastRow;
	int pastColumn;

	int chessBoard[rows][columns];

	for (i = 0; i < 8; i++)
	{
		for (j = 0; j < 8; j++)
		{
			chessBoard[i][j] = 0;
		}
	}

	printArray (chessBoard);
	cout << endl;

	chessBoard[currentRow][currentColumn] = counter;
	counter++;

	int horizontal [columns] = {2, 1, -1, -2, -2, -1, 1, 2};
	int vertical [columns] = {-1, -2, -2, -1, 1, 2, 2, 1};

	if (counter <= 64)
	{
		pastRow = currentRow;
		pastColumn = currentColumn;
		currentRow += vertical[moveNumber];
		currentColumn += horizontal[moveNumber];

		if ( chessBoard[currentRow][currentColumn] != 0)
		{	currentRow = pastRow;
			currentColumn = pastColumn;
			moveNumber++;
		}
		else
		{	chessBoard[currentRow][currentColumn] = counter;
			counter++;
			moveNumber = 1;
		}
	}

		printArray (chessBoard);

return 0;

};

void printArray( int a[rows][columns])
{
	for (int i = 0; i < rows; i++)
	{
		for (int j = 0; j < columns; j++)
			cout << a[i][j] << ' ';
			
		cout << endl;
	}
}