#include<bits/stdc++.h>
using namespace std;
long long n,m,h,o;
long long mp[10005][10005];
long long ww[10005],cc[10005];
long long w[10005],c[10005],vis[10005];
long long dp[10005];
void dfs(long long x,long long k){
for(long long i=1;i<=mp[k][0];i++){
if (!vis[mp[k][i]]){
vis[mp[k][i]]=1;
w[x]+=ww[mp[k][i]];
c[x]+=cc[mp[k][i]];
dfs(x,mp[k][i]);
}
}
}
void findfriend(long long x){
memset(vis,0,sizeof(vis));
w[x]+=ww[x];
c[x]+=cc[x];
vis[x]=1;
dfs(x,x);
}
int main(){
cin>>n>>m>>h;
for(long long i=1;i<=n;i++){
cin>>ww[i]>>cc[i];
mp[i][0]=0;
}
for(long long i=1;i<=m;i++){
long long a,b;
cin>>a>>b;
mp[a][++mp[a][0]]=b;
mp[b][++mp[b][0]]=a;
}
for(long long i=1;i<=n;i++){
findfriend(i);
}
dp[0]=0;
for(long long i=1;i<=n;i++){
for(long long j=h;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+c[i]);
}
}
cout<<dp[h];
fclose(stdin);
fclose(stdout);
return 0;
}