길이 의 수열 가 주어진다. 수열의 모든 원소는 이상의 정수이다.
합성수 합성이란, 현재 수열에서 서로 다른 두 위치 를 골라 와 를 지우고, 를 수열의 맨 뒤에 추가하는 연산이다. 이때 가 합성수이면 이 합성수 합성은 성공한 합성수 합성이고, 가 소수이면 실패한 합성수 합성이다.
당신은 합성수 합성을 수열에 수가 하나만 남을 때까지 반복해야 한다. 즉, 총 번의 합성수 합성을 수행한다. 성공한 합성수 합성 횟수를 최대화하고, 그 최댓값을 달성하는 번의 합성수 합성을 수행하며 각 합성수 합성에서 고른 두 수를 출력하여라.
Input
입력은 다음과 같은 형식으로 주어진다.
Output
첫째 줄에 성공한 합성수 합성 횟수의 최댓값을 출력한다.
그 다음 줄부터 개의 줄에 걸쳐, 각 합성수 합성에서 고른 두 수 를 공백으로 구분하여 출력한다. 두 수의 출력 순서는 임의로 정해도 된다.
각 단계에서 출력한 두 수 는 현재 수열에 존재해야 한다. 두 수가 같다면, 현재 수열에 그 값이 두 번 이상 존재해야 한다. 가능한 답이 여러 가지라면 아무거나 출력해도 된다.
Constraints
- .
- ().
Subtasks
Samples
입력
3
2 2 3
출력
1
2 2
3 4
먼저 이므로 성공한 합성수 합성이다.
그 후 은 소수이므로 실패한 합성수 합성이다.
따라서 성공한 합성수 합성은 번이며, 이것이 최댓값이다.
이 예제는 서브태스크 2, 5, 6의 조건을 만족한다.