100 10
87 73
15 71
14 33
1 4
20 80
65 67
36 36
25 4
22 21
7 97
 4 2
3 3
3 4
 5 4
3 3
4 4
5 5
1 2
 4 4
1 2
2 3
3 1
4 4
 4 3
1 1
2 3
3 4
 1000000 1
255765 255765
 4 3
1 2
2 3
4 4
 4 2
1 1
1 2
 3 3
1 1
2 2
3 3
 5 4
1 1
2 3
2 4
2 5
 4 5
1 4
3 4
1 2
2 3
2 4
 4 4
2 3
2 4
3 4
4 4
 10 9
8 10
3 10
2 8
9 3
4 8
1 10
7 9
5 4
7 3
 10 10
1 2
2 3
3 4
4 5
5 1
6 6
7 7
8 8
9 9
10 10
 5 5
1 4
3 4
1 2
2 3
2 4
 3 3
1 2
2 2
3 3
 5 3
1 1
2 2
3 3
 6 12
1 2
1 3
2 3
1 1
2 2
3 3
4 5
5 6
4 6
4 4
5 5
6 6
 4 4
1 2
2 3
1 3
4 4
 5 4
1 2
3 3
4 4
5 5
 7 13
6 7
2 7
3 7
4 3
5 2
1 4
7 7
3 1
5 5
3 3
1 5
2 6
6 6
 2 2
1 1
2 2
 5 5
1 1
2 2
3 3
4 4
5 5
 1 1
1 1
 7 3
1 1
3 3
6 6
 3 3
1 1
2 3
3 3

0 1 0 0 0 0 0 1 0 0 8 6 12 0 8 0 0 0 0 0 57 0 0 0 0 0
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	static class City {
		public boolean visited;
		public ArrayList<Integer> edges;
		public City( ) {
			edges = new ArrayList<Integer>( );
		}
	}
	
	public static City[] cities;
	
	public static City[] allocCities(int size) {
		City[] arrayEdges = new City[size];
		for(int i = 0; i < size; i++) {
			arrayEdges[i] = new City( );
		}
		
		return arrayEdges;
	}
	
	public static void deepFirstSearch(int city) {
		int size;
		if(!cities[city].visited) {
			cities[city].visited = true;
			size = cities[city].edges.size( );
			for(int i = 0; i < size; i++) {
				deepFirstSearch(cities[city].edges.get(i));
			}
		}
	}
	
	public static void main(String[] args) {
		boolean connectedEdges;
		int n, m, numberLoopEdges; 
		BigInteger numberGoodPaths;
		Scanner scan = new Scanner(System.in);
		
		n = scan.nextInt( );
		m = scan.nextInt( );
		
		cities = allocCities(n + 1);
		numberLoopEdges = 0;
		
		for(int i = 0, u, v; i < m; i++) {
			u = scan.nextInt( );
			v = scan.nextInt( );
			
			if(u != v) {
				cities[u].edges.add(v);
				cities[v].edges.add(u);
			} else {
				numberLoopEdges++;
			}
			
			if(i == (m - 1)) {
				deepFirstSearch(v);
			}
		}
		
		connectedEdges = true;
		for(int i = 1; (i <= m) && (connectedEdges); i++) {
			connectedEdges = connectedEdges && cities[i].visited;
		}
		
		numberGoodPaths = new BigInteger("0");
		
		System.out.print(numberGoodPaths);
	}
}
// 1497250310126
