#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+5;
struct xian
{
int l,r;
}a[MAXN];
int ha[MAXN];
int n,m,x;
int tou=1,wei=MAXN;
bool cmp(xian p,xian q)
{
if (p.l==q.l) return p.r<q.r;
return p.l<q.l;
}
void print();
int main()
{
freopen("station.in","r",stdin);
freopen("station.out","w",stdout);
scanf("%d%d%d",&n,&m,&x);
wei=n;
for (int i=1;i<=m;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a+1,a+1+m,cmp);
int fi=-1;
for (int i=1;i<=m;i++)
{
if (i==1)
{
if (a[i].r<=x)
{
fi=a[i].r;
ha[a[i].l]=1;
}
else if (a[i].r>x&&a[i].l<=x)
{
fi=a[i].r;
ha[a[i].l]=ha[a[i].r]=1;
}
else
{
break;
}
}
else
{
if (a[i].r<=x)
{
if (a[i].l>fi){tou=a[i].l;fi=a[i].r;ha[a[i].l]=1;}
else
{
fi=max(fi,a[i].r);
ha[a[i].l]=1;
}
}
else if (a[i].r>x&&a[i].l<=x)
{
if (a[i].l>fi){tou=a[i].l;fi=a[i].r;ha[a[i].l]=ha[a[i].r]=1;}
else
{
fi=max(fi,a[i].r);
ha[a[i].l]=ha[a[i].r]=1;
}
}
else
{
if (a[i].l>fi){wei=a[i].l;break;}
fi=max(fi,a[i].r);
ha[a[i].r]=1;
}
}
}
print();
fclose(stdin);
fclose(stdout);
return 0;
}
void print()
{
for (int i=tou;i<=wei;i++)
{
if (i!=x&&ha[i])
printf("%d ",i);
}
return;
}