using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; static class Program{ const int mod=(int)1e9+7; static List[] li; static void Main(){ Sc sc=new Sc(); var s=sc.Ia; int n=s[0],m=s[1]; var g=sc.Ia; li=new List[n+1]; var h=new int[2][]; var f=new int[2][]; h[0]=new int[n+1]; h[1]=new int[n+1]; f[0]=new int[n+1]; f[1]=new int[n+1]; for(int i=1;i<=n;i++){ li[i]=new List(); h[0][i]=h[1][i]=f[0][i]=f[1][i]=mod; } for(int i=0;i>(); qu.Enqueue(ValueTuple.Create(g[0],0)); while(qu.Count>0){ var e=qu.Dequeue(); if(h[e.Item2&1][e.Item1]!=mod){continue;} h[e.Item2&1][e.Item1]=e.Item2; for(int j = 0;j>(); qu.Enqueue(ValueTuple.Create(g[1],0)); while(qu.Count>0){ var e=qu.Dequeue(); if(f[e.Item2&1][e.Item1]!=mod){continue;} f[e.Item2&1][e.Item1]=e.Item2; for(int j = 0;j(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i