CYK의 너무너무 재밌는 그래프 만들기 놀이
시간 제한1초메모리 제한256 MB
K가지 색으로 정점을 칠하고 각 정점에서 색이 다른 작은 정점으로 최대 하나의 간선을 그리는 경우의 수를 1000000007로 나눈 나머지를 구합니다.
문제
정점이 개인 그래프를 만든다. 정점에는 부터 까지 번호를 매기고, 각 정점에 가지 색 중 하나를 칠한다. 색을 칠하는 방법에는 아무 제한이 없다.
색을 다 칠하면 간선을 추가한다. 간선은 다음 두 규칙을 지켜야 한다.
- 이고 정점 와 정점 의 색이 서로 다르면, 에서 로 향하는 간선을 추가할 수 있다. 추가하지 않아도 된다.
- 인 정점 에서 나가는 간선은 최대 한 개다. 즉 정점 의 out-degree가 을 넘지 않는다.
정점 에서는 번호가 더 작은 정점이 없으므로 나가는 간선을 만들 수 없다.
두 그래프는 모든 정점의 색이 같고 이어진 간선의 집합도 같을 때 서로 같다고 본다. 예를 들어 , 이면 아래 그림처럼 서로 다른 그래프가 24개 나온다.

과 가 주어질 때, 서로 다른 그래프의 개수를 1,000,000,007로 나눈 나머지를 구하라.
입력
첫 줄에 정점의 개수 ()과 쓸 수 있는 색의 개수 ()가 공백 한 개로 구분되어 주어진다.
출력
서로 다른 그래프의 개수를 1,000,000,007로 나눈 나머지를 한 줄에 출력한다.