Cactus cutting

아직 제출이 없습니다시간 제한15초메모리 제한256 MB

문제

Mr Malnar has given up on his tree obsession and found something even more interesting, cacti! Formally, a cactus is a connected graph where each edge is contained in at most one cycle. A cycle is defined as a sequence of more than one distinct edge in which every two consecutive edges share a common endpoint, and the first and last edge share a common endpoint as well.

Unfortunately, the cactus that Mr Malnar bought is rather big, so he would like to cut it up into disjoint sticks. One stick is defined as a pair of edges that share a common endpoint. Mr Malnar is a pedantic individual, so he wants to know the exact number of ways he can cut up his cactus into sticks.

입력

The first line contains the number of vertices NN and the number of edges MM. This is followed by MM lines, each containing two distinct integers A_iA\_i and B_iB\_i denoting an edge between vertices A_iA\_i and B_iB\_i. Each edge will be listed exactly once.

출력

Compute the number of distinct ways Mr Malnar can cut his cactus up into sticks. Since this number can get quite large, output the result modulo 106+310^6 + 3.

제한

  • 1N,M100,0001 ≤ N, M ≤ 100\\,000
  • 1A_i,B_iN1 ≤ A\_i , B\_i ≤ N