#include <iostream> #include <vector> #define nmax 1005 using namespace std; vector <int> v[nmax]; vector <pair <int, int> > sol; int n, m, x, y, pre[nmax]; bool seen[nmax]; void dfs(int x) { seen[x] = true; for(int i=0; i<int(v[x].size()); i++) { if(pre[x] == v[x][i]) sol.push_back(make_pair(min(x, v[x][i]), max(x, v[x][i]))); if(!seen[v[x][i]]) { pre[v[x][i]] = x; dfs(v[x][i]); } } } int main() { cin>>n>>m; for(int i=1; i<=m; i++) { cin>>x>>y; v[x].push_back(y); } for(int i=1; i<=n; i++) if(!seen[i]) dfs(i); cout<<sol.size()<<"\n"; for(int i=0; i<int(sol.size()); i++) cout<<sol[i].first<<" "<<sol[i].second<<"\n"; return 0; }