거의 오일러 그래프

N개의 정점을 가진 단순 그래프 중에서 간선을 하나 더하거나 빼면 오일러 그래프가 되는 그래프의 개수를 1,000,000,007로 나눈 나머지를 구합니다.

어려움9조합론그래프수학동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정점이 NN개인 양방향 그래프가 있다. 정점에는 00번부터 N1N-1번까지 번호가 매겨져 있다. 이 그래프는 단순 그래프이므로 루프가 없고, 두 정점을 잇는 간선은 많아야 한 개다.

연결 그래프이면서 모든 간선을 정확히 한 번씩 지나는 닫힌 보행이 존재하면, 그 그래프를 오일러 그래프라고 한다. 닫힌 보행은 첫 정점과 마지막 정점이 같은 보행이다. 연결 그래프라는 조건은 정점 NN개가 모두 한 덩어리로 이어져 있어야 한다는 뜻이다.

어떤 그래프에 간선 한 개를 추가하거나 한 개를 제거해서 오일러 그래프를 만들 수 있으면, 그 그래프를 거의 오일러 그래프라고 한다. 간선을 추가할 때 루프를 만들거나 이미 있는 간선을 다시 추가할 수는 없다. 또 모든 오일러 그래프는 거의 오일러 그래프다.

NN이 주어졌을 때, 정점이 NN개인 서로 다른 거의 오일러 그래프의 개수를 구하는 프로그램을 작성하시오. 0i<jN10 \le i < j \le N-1을 만족하는 간선 (i,j)(i, j)가 한 그래프에는 있고 다른 그래프에는 없다면, 두 그래프는 서로 다르다.

입력

첫째 줄에 정점의 개수 NN (2N20002 \le N \le 2000)이 주어진다.

출력

첫째 줄에 정점이 NN개인 거의 오일러 그래프의 개수를 1,000,000,007로 나눈 나머지를 출력한다.