Let us remind that the number of teams participating
in the tablefootball tournament among programmers
in the city of Petrozavodsk was N.
In the course of the tournament, each team played with each team exactly once. For each win a team earned 3 points, for a draw it earned 1 point, and for a defeat a team got 0 points. After the tournament, each team's captain made several declarations of the type: “We earned points in the match with team X”, or “We didn't earn points in the match with team X”. It is not necessary that each captain made declarations concerning all other teams. The camp's organizers understood that some captains always lied and others always told the truth.
Using this information, restore the results of the
tournament.
Input
The first line of the input contains the number of teams
1 ≤ N ≤ 100. Then there is the matrix of declarations A in the following form. There are N lines containing N numbers each, and these numbers are 0, 1, or –1.
If A_{ij} = 1, then the captain of the ith team declared that his team had earned points
in the match against the jth team.
If A_{ij} = 0, then the captain of the ith team declared that his team had not earned points in the match against the jth team.
And if A_{ij} = –1, it means that the captain of the ith team abstained from a declaration concerning the match against the jth team. It is guaranteed that A_{ii} = –1 for each i.
Output
If there exists a solution, then output a matrix B of size N × N in which B_{ij} is the number of points awarded to the ith team for the match against the jth team. If there are many solutions, you may output any of them. If there is no solution, then output “Impossible”.
Samples
input  output 

3
1 1 0
1 1 1
0 1 1
 0 0 1
3 0 3
1 0 0

5
1 1 1 0 0
0 1 1 1 1
1 0 1 1 1
0 1 1 1 1
1 1 1 0 1
 Impossible

Problem Author: Sergey Pupyrev
Problem Source: The XIth USU Programing Championship, October 7, 2006