그래프 측정
시간 제한30초메모리 제한512 MB
알려지지 않은 그래프의 간선을 무작위로 검은색과 흰색으로 k번 칠한 뒤, 정점마다 검은 간선 수만 보고 원래 그래프를 복원합니다.
문제
앤드류에게 정점이 개인 단순 무방향 그래프가 있다 (). 이 그래프에는 자기 루프와 중복 간선이 없다. 그는 다음 측정을 번 반복한다. 각 간선을 검은색 또는 흰색으로 독립적으로 칠하며, 두 색이 나올 확률은 각각 50%이다. 그다음 각 정점에 인접한 검은색 간선의 수를 세고, 이 개의 수를 당신에게 알려 준다.
목표는 주어진 개의 수로 원래 그래프를 복원하는 것이다.
입력
첫 줄에 정수 과 가 주어진다(예제를 제외한 모든 경우에 ). 이어서 개의 줄에 각각 정수 개가 주어진다. 번째 줄은 측정 에서 정점 번호 순서대로 각 정점에 인접한 검은색 간선의 수이다.
출력
첫 줄에 간선의 수 을 출력한다. 이어서 개의 줄에 간선을 두 정점 번호로 나타내어 한 줄씩 출력한다. 정점 번호는 1부터 까지이며, 자기 루프는 없어야 하고 같은 정점 쌍을 잇는 간선은 최대 하나여야 한다. 간선의 순서와 각 간선 안에서 두 정점의 순서는 상관없다.
예제에서는 입력과 맞지 않더라도 올바른 그래프이면 인정된다(예를 들어 간선이 0개인 그래프도 인정된다). 예제 이외의 경우에는 입력을 실제로 생성한 그래프만 인정된다.
힌트
예제를 제외한 모든 경우에는 측정 횟수가 많다. 정확히는 이다. 예제가 아닌 테스트는 33개이다.