#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=998244353;
int pre[100005],ran[100005];
int n,m,t;
int init(int n)
{
for(int i=1;i<=n;i++)
{
pre[i]=i;
ran[i]=1;
}
}
int find_pre(int x)
{
while(x!=pre[x])
x=pre[x];
return x;
}
bool is_t(int x,int y)
{
return find_pre(x)==find_pre(y);
}
void unitey(int x,int y)
{
int rx,ry;
rx=find_pre(x);
ry=find_pre(y);
if(rx!=ry)
{pre[rx]=ry;}
}
ll qm(ll a,ll b)
{
ll ret=1;
while(b)
{
if(b&1)
ret=ret*a%mod;
a=a*a%mod;
b>>=1;
}
return ret%mod;
}
int main()
{
scanf("%d %d %d",&n,&m,&t);
int cnt=0,ant=0;
init(n);
for(int i=0;i<t;i++)
{
int x,y;
scanf("%d %d",&x,&y);
unitey(x,y);
}
for(int i=1;i<=n;i++)
{
//cout<<pre[i]<<endl;
if(pre[i]==i)
ant++;
}
printf("%lld\n",qm(1ll*m,1ll*ant));
return 0;
}