#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N>>M; vector A(N); rep(i,N) cin>>A[i]; rep(i,N) A[i]--; for(int i=0;i+1> g(M); for(int i=0;i+1 g[A[i+1]].push_back(A[i]); }else{ g[A[i]].push_back(A[i+1]); } } vector in(M,0); rep(i,M) for(auto to:g[i]) in[to]++; vector ans(M,-1); int cnt=0; queue Q; rep(i,M) if(in[i]==0){ Q.push(i); } while(!Q.empty()){ int now=Q.front(); Q.pop(); ans[now]=cnt++; for(auto nex:g[now]){ in[nex]--; if(in[nex]==0) Q.push(nex); } } if(cnt==M){ cout<<"Yes"<