숫자판 만들기

시간 제한5초메모리 제한128 MB

문제

가로와 세로의 크기가 모두 N인 숫자판이 있다. 각 칸에는 0 이상의 정수를 넣어야 한다. 각 행의 합과 각 열의 합이 미리 주어질 때, 모든 합을 만족하도록 숫자판을 채워야 한다.

예를 들어 N=2일 때 필요한 행의 합과 열의 합이 다음과 같다고 하자.

행 합
??12
??4
610

오른쪽의 수는 각 행의 합을, 아래쪽의 수는 각 열의 합을 나타낸다. 같은 합을 만족하는 숫자판은 여러 가지일 수 있다. 위 상황에서 가능한 배치 세 가지는 다음과 같다.

57
13
66
04
48
22

가능한 모든 배치 중에서, 어떤 칸에 들어간 값의 최댓값이 가장 작아지는 배치를 하나 찾아야 한다. 위 상황에서는 최댓값이 6인 배치가 최적이다. 이런 배치를 구성하는 프로그램을 작성하시오.

입력

첫째 줄에 행과 열의 크기 N이 주어진다 (1 ≤ N ≤ 50).

둘째 줄에는 N개의 정수가 주어진다. 이 정수들은 1행부터 N행까지 필요한 행의 합을 차례대로 나타낸다.

셋째 줄에는 N개의 정수가 주어진다. 이 정수들은 1열부터 N열까지 필요한 열의 합을 차례대로 나타낸다.

각 합은 0 이상 10000 이하이다. 숫자판을 만들 수 없는 입력은 주어지지 않는다.

출력

첫째 줄에는 만든 숫자판에 들어간 값들 중 최댓값을 출력한다.

둘째 줄부터 N개의 줄에는 숫자판의 각 행을 한 줄에 하나씩 출력한다. 출력하는 모든 값은 0 이상의 정수여야 한다. 모든 행의 합과 열의 합이 입력과 같아야 하며, 출력한 값의 최댓값은 가능한 한 작아야 한다.