#include <bits/stdc++.h>usingnamespacestd;
constint maxn = 100000 + 5;
int par[maxn];
typedeflonglong LL;
int find(int x)
{
return x == par[x] ? x : par[x] = find(par[x]);
}
int n, m, k;
int cnt[maxn];
int main()
{
scanf("%d%d%d", &n, &m, &k);
for(int i = 0; i <= n; i++) par[i] = i;
for(int i = 0; i < m; i++) {
int a, b;
scanf("%d%d", &a, &b);
par[find(a)] = find(par[b]);
}
for(int i = 1; i <= n; i++) {
cnt[find(i)]++;
}
LL ans = 1;
int p = 0;
for(int i = 1; i <= n; i++) {
if(i == par[i]) {
ans = ans*cnt[i]%k;
p++;
}
}
if(p == 1) {
ans /= cnt[find(1)];
}
for(int i = 0; i < p - 2; i++) {
ans = ans*n%k;
}
cout << ans << endl;
return0;
}