public String toString()
	{
		StringBuilder sb = new StringBuilder();
		
		sb.append("N: ");
		sb.append(N);
		
		sb.append("\tP: ");
		sb.append(p);
		
		sb.append("\tQ: ");
		sb.append(q);
		
		sb.append("\n");
		
		for(int i = 0; i < N; ++i)
		{
			for(int j = 0; j < N; ++j)
			{
				sb.append(Odometer.intToOdometer(board[i][j]) + " ");
				
				// Print gridlines
				if((j + 1) % q == 0 && j != 0 && j != N-1)
				{
					sb.append("| ");
				}
			}
			
			sb.append("\n");
			
			// Print gridlines
			if((i + 1) % p == 0 && i != 0 && i != N-1)
			{
				for(int k = 0; k < N+p-1; ++k)
				{
					sb.append("- ");
				}
				
				sb.append("\n");
			}
		}
		
		return sb.toString();
	}