using
System;
using
System.Collections.Generic;
class
Program
{
static
void
CheckPossibility(
int
N,
int
M, List<List<
int
>> arr)
{
for
(
int
i = 0; i < M; i++)
{
if
(i == 0)
{
arr[0][i] = (arr[0][i] == -1) ? 1 : arr[0][i];
}
else
{
arr[0][i] = (arr[0][i] == -1) ? arr[0][i - 1] : arr[0][i];
}
}
for
(
int
i = 1; i < N; i++)
{
for
(
int
j = 0; j < M; j++)
{
if
(j == 0)
{
arr[i][j] = (arr[i][j] == -1) ? arr[i - 1][j] : arr[i][j];
}
else
{
int
maxVal = Math.Max(arr[i - 1][j], arr[i][j - 1]);
arr[i][j] = (arr[i][j] == -1) ? maxVal : arr[i][j];
}
}
}
for
(
int
i = 0; i < N; i++)
{
for
(
int
j = 1; j < M; j++)
{
if
(arr[i][j] < arr[i][j - 1])
{
Console.WriteLine(-1);
return
;
}
}
}
for
(
int
i = 0; i < M; i++)
{
for
(
int
j = 1; j < N; j++)
{
if
(arr[j][i] < arr[j - 1][i])
{
Console.WriteLine(-1);
return
;
}
}
}
for
(
int
i = 0; i < N; i++)
{
for
(
int
j = 0; j < M; j++)
{
Console.Write(arr[i][j] +
" "
);
}
Console.WriteLine();
}
}
static
void
Main(
string
[] args)
{
int
N = 4;
int
M = 4;
List<List<
int
>> A =
new
List<List<
int
>>()
{
new
List<
int
> { 1, 2, 2, 3 },
new
List<
int
> { 1, -1, 7, -1 },
new
List<
int
> { 6, -1, -1, -1 },
new
List<
int
> { -1, -1, -1, -1 }
};
CheckPossibility(N, M, A);
}
}