int n,m;
Max_Flow<int> MF;
int main()
{
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
while(scanf("%d%d",&n,&m) != EOF)
{
int S,T;
scanf("%d%d",&S,&T);
MF.Init(2*n+2,S,T+n);
for(int i=1;i<=n;i++)
{
int num;
scanf("%d",&num);
MF.Add_edge(i,i+n,num);
}
for(int i=0;i<m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
MF.Add_edge(u+n,v,0x3f3f3f3f);
MF.Add_edge(v+n,u,0x3f3f3f3f);
}
printf("%d\n",MF.Dinic());
}
return 0;
}