#include<bits/stdc++.h>
using namespace std;
int fa[20005],num[20005],qwq[20005],len=0,dp[20005];
inline int find(int x)
{
if (fa[x]==x)
{
return x;
}
fa[x]=find(fa[x]);
}
int main()
{
int n,m,k;
cin >> n >> m >> k;
for (int i=1;i<=n;++i)
{
fa[i]=i,num[i]++;
}
for (int i=1;i<=k;++i)
{
int x,y;
cin >> x >> y;
if (find(x)!=find(y))
{
fa[y]=x;
num[x]+=num[y];
}
}
for (int i=1;i<=n;++i)
{
if (fa[i]==i)
{
qwq[++len]+=num[i];
}
}
for(int i=1;i<=n;++i)
{
for(int j=n;j>=qwq[i];--j)
{
dp[j]=max(dp[j],dp[j-qwq[i]]+qwq[i]);
}
}
int minn=abs(m-dp[m+1]);
for(int i=m+1;i<=n;++i)
{
minn=min(minn,abs(m-dp[i]));
}
if(minn<abs(m-dp[m]))
{
cout << m+minn;
}
else
{
cout << dp[m] << endl;
}
return 0;
}