#include <iostream> #include <cstdlib> #include <stack> using namespace std; int d (const void* a,const void* b){int* p1=(int*)a;int* p2=(int*)b; return p1[0] - p2[0];}int main(){int a,b,c,e,f,i,j,k,n;stack<int> q; stack<int> r;cin>>n>>k>>a>>b;k=2*k;int p[k][2]; int* g;int** h=new int*[n+1];int* l=new int[n+1];int* m=new int[n+1];int* o=new int[n+1];for(i=0;i<k;i+=2){cin>>p[i][0]>>p[i][1]; p[i+1][1]=p[i][0];p[i+1][0]=p[i][1];}qsort(p,k,2*sizeof(int),d);i=j=0; while(i<k){h[p[i][0]]=p[i];l[p[i][0]]=1;j++;while(p[i][0]==p[j][0]&&j<k){l[p[i][0]]++; j++;}i=j;}if(a==b){cout<<a;return 0;}if(a<b){if(h[1]==NULL){cout<<b;return 0;} m[1]=1;for(i=2;i<=n;i++)m[i]=0;e=a;g=h[1];for(i=0;i<l[1];i++){c=g[1];m[c]=1; if(c==n){cout<<a;return 0;}r.push(c);g+=2;}while(!r.empty()){swap(q,r);e=e+a;if(e>=b) {cout<<b;return 0;}while(!q.empty()){f=q.top();q.pop();g=h[f]; for(j=0;j<l[f];j++){c=g[1];if(m[c]==0){if(c==n&&e<b){cout<<e;return 0;}m[c]=1; r.push(c);}g+=2;}}}cout<<b;return 0;}else{if(h[1]==NULL){cout<<b;return 0;}m[1]=1; if(n<=1000&&k>((n*(n-1))/2+1)){int kk=0;int pp[n*(n-1)-k][2];int* t=pp[0];for(i=1;i<=n;i++){ if(h[i]==NULL){h[i]=t;for(j=1;j<=n;j++){if(j!=i) {kk++;t[0]=i;t[1]=j;t+=2;}}l[i]=n-1;} else{for(j=1;j<=n;j++){m[j]=0;}g=h[i];for(j=0;j<l[i];j++){m[g[1]]=1;g+=2;}h[i]=t; int s=0;for(j=1;j<=n;j++){if(m[j]==0&&i!=j){kk++;s++;t[0]=i;t[1]=j;t+=2;}}l[i]=s; if(s==0)h[i]=NULL;}}k=kk;m[1]=1;for(i=2;i<=n;i++)m[i]=0;e=b;g=h[1];for(i=0;i<l[1];i++){ c=g[1];m[c]=1;if(c==n){cout<<b;return 0;}r.push(c);g+=2;}while(!r.empty()){swap(q,r); e=e+b;if(e>=a){cout<<a;return 0;}while(!q.empty()){f=q.top();q.pop();g=h[f]; for(j=0;j<l[f];j++){c=g[1];if(m[c]==0){if(c==n&&e<a){cout<<e;return 0;}m[c]=1;r.push(c); }g+=2;}}}cout<<a;return 0;}e=b;g=h[1];for(i=2;i<=n;i++){o[i]=0;} for(i=0;i<l[1];i++){c=g[1];o[c]=1;g+=2;}if(!o[n]){cout << b;return 0;} for(i=2;i<=n;i++){if(o[i]==0){r.push(i);m[i]=1;}else m[i]=0;o[i]=0;}while(!r.empty()){ swap(q, r);e=e+b;if(e>=a){cout<<a;return 0;}while(!q.empty()){f=q.top();q.pop(); g=h[f];for(j=0;j<l[f];j++){c=g[1];o[c]=1;g+=2;} if(o[n]==0&&e<a){cout<<e;return 0;}for(i=2;i<=n;i++){if(o[i]==0&&m[i]==0){m[i]=1; r.push(i);}o[i]=0;}}}cout<<a;return 0;}}