P-네트워크
시간 제한2초메모리 제한128 MB
N개 전선의 순열이 주어질 때 p-network로 실현 가능한지 판별하고, 가능하면 필요한 최소 획 수를 구한다.
문제
Pretty Networks Inc.는 입력 값들의 집합을 정해진 방식으로 변환하는 흥미로운 장치를 만드는 회사입니다. 각 변환은 이 회사가 p-네트워크라고 부르는 구조로 결정됩니다.

차수(order)가 이고 크기(size)가 인 p-네트워크는 으로 번호가 매겨진 개의 수평 선(wire)과 개의 수직 획(stroke)으로 이루어집니다. 각 획은 서로 인접한 두 선을 연결합니다. 어떤 선 위에서도 서로 다른 두 획이 같은 지점에 닿지 않으며, 어떤 획도 선의 가장 왼쪽 끝이나 가장 오른쪽 끝에는 닿지 않습니다. 위 그림은 차수 , 크기 인 p-네트워크입니다.
p-네트워크가 결정하는 변환은 다음 규칙에 따라 네트워크를 따라가며 정해집니다.
- 한 선의 가장 왼쪽 끝에서 시작하여 오른쪽으로 이동한다.
- 획을 만날 때마다 그 획이 연결하는 선으로 옮겨 간 뒤, 계속 왼쪽에서 오른쪽으로 나아간다.
- 어떤 선의 가장 오른쪽 끝에 도달하면 멈춘다.
선 에서 출발하여 선 에서 끝나면, 이 p-네트워크는 를 로 변환한다고 하고 로 씁니다. 위 그림의 p-네트워크는 다음 변환들을 실현합니다.
차수 과 원하는 변환 집합 이 주어집니다. 이 변환을 실현하는 차수 의 p-네트워크가 하나라도 존재하는지 판단하고, 존재한다면 그러한 모든 p-네트워크 중 가장 작은 크기 (획의 최소 개수)를 구하세요. (이 최소값은 항상 이하이며, 이는 회사가 다루는 상한 보다 훨씬 작습니다.)
입력
입력에는 여러 개의 p-네트워크 설계 문제가 주어집니다. 각 문제는 한 줄에 값 이 하나의 공백으로 구분되어 주어집니다. 은 원하는 p-네트워크의 차수, 즉 선의 개수이며 (), 값 은 p-네트워크가 변환 집합 을 실현해야 함을 뜻합니다 (모든 에 대해 ). 입력은 인 줄로 끝나며, 이 줄은 처리하지 않습니다.
출력
각 설계 문제마다 한 줄을 출력합니다. 요청된 변환을 실현하는 p-네트워크가 존재하지 않으면 그 줄은 No solution이어야 합니다. 존재한다면 그 줄에는 정수 하나, 즉 그 변환을 실현하는 차수 의 p-네트워크가 가질 수 있는 최소 크기 (획의 최소 개수)을 출력합니다.