만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

소수의 합

면접 대비

시간 제한3초메모리 제한128 MB

요약
각 n에 대해 소수들의 합으로 n을 만드는 방법의 수를 세고, 그 값을 1,000,000,007로 나눈 나머지를 구합니다.
난이도

쉬움10점 중 3점

유형
동적 계획법, 정수론
정답자
아직 제출이 없습니다

문제

소수(Prime Number)란 11이 아니면서, 11과 자기 자신 이외에 약수가 존재하지 않는 양의 정수를 의미합니다. 예를 들어, 22, 33, 55, 77 등이 소수에 해당합니다. 함수 f(n)f(n)을 "nn을 00개 이상의 소수의 합으로 표현하는 경우의 수"로 정의합시다. 이때, 소수의 종류는 중복해서 사용할 수 있으며, 종류가 같고 순서만 다른 경우는 같은 경우로 봅니다. 예를 들어, 55는 2+32+3 또는 55로 나타낼 수 있으며, 다른 방법은 존재하지 않습니다. 따라서 f(5)f(5)는 22입니다.

정수 nn이 주어질 때, f(n)f(n)의 값을 구하여 출력하세요. 정답이 커질 수 있으니 정답을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력하세요.

입력

첫 번째 줄에 테스트 케이스의 개수 TT (1≤T≤10 0001 \le T \le 10\,000)가 주어집니다.

두 번째 줄부터 T+1T+1번째 줄까지 i+1i+1번째 줄에 각각 정수 nin_i (0<ni≤100 0000 < n_i \le 100\,000)가 주어집니다.

출력

각 테스트 케이스에 대해 정답을 한 줄에 하나씩 출력하세요. 정답이 커질 수 있으니 정답을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력하세요.

예제1

  1. 예제 1

    입력
    6
    1
    2
    5
    7
    10
    20000
    
    예상 출력
    0
    1
    2
    3
    5
    384444614