#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int f[20001];
int t[20001];
int cnt,a[20001];
bool u[20001];
int ans;
int find(int x)
{
    if(f[x]==x) return f[x];
    f[x]=find(f[x]);
    return f[x];
}
void merge(int x,int y)
{
    f[find(x)]=f[find(y)];
}
int main()
{
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++) f[i]=i;
    for(int i=1;i<=k;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        if(find(x)!=find(y)) merge(x,y);
    }
    for(int i=1;i<=n;i++) f[i]=find(f[i]);
    for(int i=1;i<=n;i++) t[f[i]]++;
    for(int i=1;i<=n;i++)
    {
        if(t[i])
        {
            a[++cnt]=t[i];
        }
    }
    u[0]=1;
    for(int i=1;i<=cnt;i++)
    {
        for(int j=n-a[i];j>=0;j--)
        {
            if(u[j]) u[j+a[i]]=1;
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(u[i]&&abs(ans-m)>abs(i-m)) ans=i;
    }
    printf("%d",ans);
    return 0;
}
/**************************************************************
	Problem: 1933
	User: admin
	Language: C++
	Result: Accepted
	Time:46 ms
	Memory:2804 kb
****************************************************************/