#include<bits/stdc++.h>constint MAXN =100000;int N, MOD, M, K;int Fa[MAXN +5], Size[MAXN +5];intFind(int x){return(Fa[x]== x)? x :(Fa[x]=Find(Fa[x]));}intPow(int x,int y){int ret =1;while(y){if(y &1)
ret =(longlong)ret * x % MOD;
x =(longlong)x * x % MOD;
y >>=1;}return ret;}intmain(){scanf("%d%d%d",&N,&M,&MOD);for(int i =1; i <= N; i++)
Fa[i]= i, Size[i]=1;for(int i =1; i <= M; i++){int u, v;scanf("%d%d",&u,&v);int x =Find(u), y =Find(v);if(x != y)
Fa[x]= y, Size[y]+= Size[x];}int Ans =1;for(int i =1; i <= N; i++){Find(Fa[i]);if(Fa[i]== i)
K++, Ans =(longlong)Ans * Size[i]% MOD;}if(K ==1)returnprintf("%d",1% MOD),0;
Ans =(longlong)Ans *Pow(N, K -2)% MOD;printf("%d", Ans);return0;}