#include static void solve(int size_x, int size_y, int number_table[10][100], int known_table[10][100], int number_of_unknowns); int main() { #ifdef TARGET_RT_MAC_CFM FILE *stream = fopen("input", "r"); #else FILE *stream = stdin; #endif int is_first = 1; int size_x, size_y, x, y, number_of_unknowns; int number_table[10][100], known_table[10][100]; for (;;) { fscanf(stream, "%d", &size_y); if (size_y <= 0) break; fscanf(stream, "%d", &size_x); size_x++, size_y++; number_of_unknowns = 0; for (y = 0; y < size_y; y++) { for (x = 0; x < size_x; x++) { if (fscanf(stream, "%d", &number_table[x][y]) == 1) known_table[x][y] = 1; else { fscanf(stream, " %*c"); known_table[x][y] = 0; number_of_unknowns++; } } } if (!is_first) printf("\n"); is_first = 0; solve(size_x, size_y, number_table, known_table, number_of_unknowns); } return 0; } static void solve(int size_x, int size_y, int number_table[10][100], int known_table[10][100], int number_of_unknowns) { int done = 0, x, y, unknown_index; long known_sum; while (!done) { done = 1; for (x = 0; x < size_x - 1; x++) { unknown_index = -1, known_sum = 0; for (y = 0; y < size_y - 1; y++) { if (known_table[x][y]) known_sum += number_table[x][y]; else { if (unknown_index != -1) { unknown_index = -1; break; } unknown_index = y; } } if (unknown_index != -1) { number_table[x][unknown_index] = number_table[x][size_y - 1] - known_sum; known_table[x][unknown_index] = 2; number_of_unknowns--; done = 0; } } if (number_of_unknowns <= 0) break; for (y = 0; y < size_y - 1; y++) { unknown_index = -1, known_sum = 0; for (x = 0; x < size_x - 1; x++) { if (known_table[x][y]) known_sum += number_table[x][y]; else { if (unknown_index != -1) { unknown_index = -1; break; } unknown_index = x; } } if (unknown_index != -1) { number_table[unknown_index][y] = number_table[size_x - 1][y] - known_sum; known_table[unknown_index][y] = 2; number_of_unknowns--; done = 0; } } if (number_of_unknowns <= 0) break; } // while (!done) if (number_of_unknowns > 0) printf("NO\n"); else { for (y = 0; y < size_y - 1; y++) { for (x = 0; x < size_x - 1; x++) { if (known_table[x][y] == 2) printf("%d\n", number_table[x][y]); } } } } // solve