#include <bits/stdc++.h>
using namespace std;
int n,m,v;
int c[100005],d[100005];
int fa[100005];
int find(int x)
{
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
int f[20005];
//vector<int> g[1005];
int main()
{
cin>>n>>m>>v;
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=n;i++)
cin>>c[i]>>d[i];
int x,y;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
fa[find(x)]=find(y);
//g[x].push_back(y);
//g[y].push_back(x);
}
for(int i=1;i<=n;i++)
{
if(fa[i]!=i)
{
c[fa[i]]+=c[i];
c[i]=0;
d[fa[i]]+=d[i];
d[i]=0;
}
}
for(int i=1;i<=n;i++)
{
for(int w=v;w>=c[i];w--)
{
f[w]=max(f[w],f[w-c[i]]+d[i]);
}
}
cout<<f[v];
return 0;
}