마츠자키 수
시간 제한8초메모리 제한512 MB
각 질의 N, P에 대해 N보다 큰 두 소수의 합을 중복을 포함해 오름차순으로 나열하고 P번째 값을 구한다. P는 100 이하이다.
문제
마츠자키 교수는 우주의 진리를 연구하는 과학자이다. 인생, 우주, 모든 것의 답은 42라고들 하지만, 마츠자키 교수는 그것만으로는 우주의 진리를 밝히기에 부족하다고 본다. 우주의 진리는 두 매개변수로 이루어진 함수로 나타나며, 42는 그중 하나에 지나지 않는다는 것이다.
마츠자키 교수가 정의한 함수 M(N, P)는 N보다 큰 소수 두 개를 골라(같은 수를 두 번 골라도 된다) 더해서 얻을 수 있는 수 전체를 작은 것부터 순서대로 나열했을 때 P번째에 나타나는 수를 뜻한다. 두 가지 이상의 합으로 나타나는 수가 있어도, 그런 수는 합의 조합 수만큼 나열한다.
예로 N = 0인 경우를 생각하자. 이때는 소수 전체에서 두 개를 골라 더한다. 이런 합 가운데 가장 작은 수는 같은 수를 두 번 골라도 되므로 2 + 2 = 4임을 알 수 있다. 즉 M(0, 1) = 4이다. 다음으로 작은 수는 2 + 3 = 5이므로 M(0, 2) = 5이다. 같은 방식으로 생각하면 합을 나열한 것은 4, 5, 6, 7, 8, 9, 10, 10, 12, 13, 14, 14, 16, ... 과 같다. 즉 예를 들어 M(0, 9) = 12이다.
같은 방식으로 N = 10인 경우를 생각하면, 이때는 10보다 큰 소수 {11, 13, 17, 19, ...}에서 두 개를 고르게 되고, 얻어지는 합을 작은 것부터 나열하면 22, 24, 26, 28, 30, 30, 32, ... 와 같다.
여러분의 일은 N과 P가 주어졌을 때 M(N, P)를 계산하는 프로그램을 작성하는 것이다.
입력
입력은 여러 데이터 세트로 이루어진다. 데이터 세트는 한 줄이며, 두 정수 N (0 ≤ N ≤ 100,000)과 P (1 ≤ P ≤ 100)가 공백 하나로 구분되어 주어진다.
입력의 끝은 공백으로 구분된 두 개의 -1을 포함하는 한 줄로 나타낸다.
출력
각 데이터 세트마다 M(N, P)의 값을 한 줄에 출력한다. 출력에 불필요한 공백이나 줄바꿈을 넣어서는 안 된다.