
#include<bits/stdc++.h>
#define N 10010
using namespace std;
int fa[N],v[N],pr[N];
int vv[N],pp[N],f[N];
int n,m,w,cut;
int found(int x)
{
if(fa[x]!=x)fa[x]=found(fa[x]);
return fa[x];
}
int main()
{
scanf("%d%d%d",&n,&m,&w);
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=n;i++)
scanf("%d%d",&v[i],&pr[i]);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
int fx=found(x),fy=found(y);
fa[fx]=fy;
}
for(int i=1;i<=n;i++)
{
int x=found(i);
if(x!=i)
v[x]+=v[i],pr[x]+=pr[i];
}
for(int i=1;i<=n;i++)
if(found(i)==i)
vv[++cut]=v[i],pp[cut]=pr[i];
for(int i=1;i<=cut;i++)
for(int j=w;j>=vv[i];j--)
f[j]=max(f[j],f[j-vv[i]]+pp[i]);
cout<<f[w];
return 0;
}