#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
long long n,m,w,v1,v2,father[100010];
struct ww{
long long c,d;
}v[100100];
int find(int x1)
{
if(father[x1]==x1)
return x1;
return father[x1]==find(father[x1]);
}
void www(int x,int y)
{
int xx=find(x);
int yy=find(y);
if(xx!=yy)
{
father[yy]=xx;
v[xx].c+=v[yy].c;
v[yy].c=0;
v[xx].d+=v[yy].d;
v[yy].d=0;
}
}
bool cmp(ww a,ww b)
{
return a.d>b.d;
}
int main()
{
cin>>n>>m>>w;
for(int i=1;i<=n;i++)
{
father[i]=i;
}
for(int i=1;i<=n;i++)
{
cin>>v[i].c>>v[i].d;
}
for(int i=1;i<=m;i++)
{
cin>>v1>>v2;
www(v1,v2);
}
sort(v+1,v+1+n,cmp);
for(int i=1;i<=n;i++)
{
cout<<v[i].c<<' '<<v[i].d<<endl;
if(v[i].c<=w)
{
cout<<v[i].d<<endl;
return 0;
}
}
}