Fill the rectangles with maximum "important" values.

We have a rectangle with n rows and m columns filled with numbers from 1 to n*m.
Cell (i,j) of the rectangle is important iff:

  • i = 1 and j = 1 (or)
    *there is an important cell (a,b) such that (a,b) is a neighbor of (i,j) and the number
    on (i,j) is greater than number on cell (a,b) and all of (a,b)'s neighbors except for (
    (i,j) itself

Two cells are considered to be neighbors if they share a common edge between them.
Unfortunately the number in some of the cells has been erased. We want to write a number to those cells such that the resultant rectangle has all the numbers between 1 to nm and it contains as many important cells as possible. In case there are several ways to do that, we are interested with the rectangle which is lexicographically smallest.
A table is lexicographically smaller that the other if the string of its row-major view is lexicographically smaller than the other.
Input:
The first line of the input contains two integers n and m, Each of the next n lines contains m tokens. Each token is either an integer between 1 and n
m or ‘?’.
Output:
Print the maximum number of important cells that can be obtained in the first line of the output and print the rectangle in the next n lines.

Constraints:
1 <=n,m <=6

Sample input #00:
2 3
2 ? ?
? ? 3

Sample output #00:
3
2 1 4
5 6 3

Sample input #01:
6 6
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?

Sample output #02:
24
1 2 3 13 14 15
4 6 8 10 11 16
5 7 9 12 19 17
28 26 24 22 20 18
29 27 25 23 21 36
30 31 32 33 34 35

//