cubelover는 다음 순서로 재료를 조합한다.
이 가마로 만든 완성품은 재료를 넣은 순서와 상관없이 결정된다. 넣은 재료가 다르면 완성품도 항상 다르다. 완성품의 품질은 넣은 재료의 품질을 모두 곱한 값과 같다.
예를 들어 품질이 2인 도마뱀의 꼬리와 품질이 3인 요정의 날개를 쓴다고 하자. 도마뱀의 꼬리, 요정의 날개, 도마뱀의 꼬리 순서로 넣어 사과 주스가 나왔다면 사과 주스의 품질은 2×3×2=12다. 순서는 완성품에 영향을 주지 않으므로 요정의 날개, 도마뱀의 꼬리, 도마뱀의 꼬리 순서로 넣어도 같은 사과 주스가 나온다.
cubelover는 오늘 재료를 n개 조합한다. 창고에는 재료가 m종류 있고 품질은 각각 a1,a2,…,am으로 서로 다르다. 같은 종류의 재료는 몇 번이든 넣을 수 있다. 두 완성품이 같다는 것은 종류별로 넣은 개수가 모두 일치한다는 뜻이다. 완성품이 너무 많아 cubelover는 직접 세지 못했다. 만들 수 있는 완성품 전체의 품질을 더한 값을 구하라.
첫 줄에 정수 n과 m이 공백으로 구분되어 주어진다. (1≤n≤109, 1≤m≤103)
둘째 줄에 a1,a2,…,am이 공백으로 구분되어 주어진다. (1≤ai≤109, 모든 ai는 서로 다르다)
만들 수 있는 완성품 전체의 품질을 더한 값을 1000000007로 나눈 나머지를 첫 줄에 출력한다.