#include<bits/stdc++.h>
using namespace std;
int n,m,w,c[100000],f[5001],cc[100000],bb[100000],b[100000],F[100000],k[100000];
int Find(int FF){
if(F[FF]==FF){
return FF;
}
return F[FF]=Find(F[FF]);
}
int main(){
cin>>n>>m>>w;
for(int i=1;i<=n;i++){
cin>>c[i]>>b[i];
F[i]=i;
}
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
if(x!=y)
F[Find(x)]=Find(y);
}
for(int i=1;i<=n;i++){
cc[Find(i)]+=c[i];
bb[Find(i)]+=b[i];
}
for(int i=1;i<=n;i++){
for(int y=w;y>=cc[i];y--){
f[y]=max(f[y],f[y-cc[i]]+bb[i]);
}
}
cout<<f[w];
}