#define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; #include using namespace std; int color[100010]; bool flag=true; void dfs(int u,vector>& G){ color[u]=1; for(auto x:G[u]){ if(color[x]==1){ flag=false; return; } if(color[x]==0) dfs(x,G); } color[u]=2; } int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); int n,q; cin>>n>>q; vector A(q),B(q); rep(i,q){ cin>>A[i]>>B[i]; A[i]--,B[i]--; } vector> G(n); rep(i,q) G[A[i]].push_back(B[i]); rep(i,n) if(color[i]==0) dfs(i,G); if(flag==true){ cout<<-1<1){ int mid=(ok+ng)/2; flag=true; rep(i,n) color[i]=0; vector> H(n); rep(i,mid) H[A[i]].push_back(B[i]); rep(i,n) if(color[i]==0) dfs(i,H); if(flag==true) ng=mid; else ok=mid; } cout<