#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) int N,M,S,T; int P[100000]; vector E[100000]; bool F[100000]; int main(){ scanf("%d%d%d%d",&N,&M,&S,&T); S--; T--; rep(i,N) scanf("%d",&P[i]); rep(i,M){ int u,v; scanf("%d%d",&u,&v); u--; v--; E[u].push_back(v); E[v].push_back(u); } rep(i,N) F[i]=false; priority_queue> Q; F[S]=true; Q.push({P[S],S}); int X=P[S]; int Y=0; while(Q.size()){ int p=Q.top().second; Q.pop(); if(X>P[p]){ X=P[p]; Y++; } for(int e:E[p]){ if(F[e]) continue; F[e]=true; Q.push({P[e],e}); } } printf("%d\n",Y); return 0; }