빨간 선분 파란 선분

N개의 점을 빨강 또는 파랑으로 칠한 뒤 같은 색 점끼리 교차하지 않게 선분을 그리되 빨강과 파랑 선분은 서로 닿지 않게 그려 점수 합의 최댓값을 구한다.

어려움8동적 계획법기하백트래킹조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

평면 위에 서로 다른 점 NN개가 있다. 점에는 0번부터 N1N-1번까지 번호가 붙어 있다.

점과 점을 잇는 선분을 그어 점수를 모으는 게임을 한다. 게임은 두 단계로 진행한다. 첫 번째 단계에서는 모든 점을 빨간색이나 파란색으로 칠한다. 두 번째 단계에서는 선분을 0개 이상 긋는다.

선분은 색이 같은 두 점을 이어서 긋고, 선분의 색은 두 점의 색과 같다.

색이 같은 선분끼리는 닿거나 교차해도 된다. 색이 다른 선분끼리는 닿거나 교차하면 안 된다. 즉 빨간 선분과 파란 선분은 공통점이 하나도 없어야 하고, 한 선분의 끝점이 다른 색 선분 위에 놓이는 것도 안 된다.

이 제한은 실제로 그은 선분 사이에만 적용한다. 빨간 선분이 파란 점을 지나가더라도 그 점에 닿는 파란 선분을 긋지 않았다면 상관없다.

ii번 점과 jj번 점을 잇는 빨간 선분의 점수는 red[i][j]이고, 같은 두 점을 잇는 파란 선분의 점수는 blue[i][j]이다.

선분을 그어서 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 NN이 주어진다. (2N202 \le N \le 20)

둘째 줄부터 NN개의 줄에 걸쳐 0번 점부터 차례대로 점의 좌표 xxyy가 주어진다. (1000x,y1000-1000 \le x, y \le 1000) 좌표가 같은 점은 없다.

이어지는 NN개의 줄에는 빨간 선분의 점수 행렬이 주어진다. 그중 ii번째 줄의 jj번째 수가 red[i][j]이다. 그다음 NN개의 줄에는 같은 방식으로 파란 선분의 점수 행렬 blue[i][j]가 주어진다. red[i][j]blue[i][j]는 모두 0 이상 100,000 이하의 정수이다.

모든 ii에 대해 red[i][i]blue[i][i]는 0이고, 모든 iijj에 대해 red[i][j]red[j][i]와 같고 blue[i][j]blue[j][i]와 같다.

출력

첫째 줄에 선분을 그어서 얻을 수 있는 점수의 최댓값을 출력한다.

힌트

첫 번째 예제에서는 점을 모두 파란색으로 칠하고 파란 선분을 여섯 개 모두 그으면 2+3+7+4+6+5=272+3+7+4+6+5 = 27점이 된다.