#include #include using namespace std; struct Edge { int fr; int to; }; int main() { int n, m; cin >> n >> m; vector edges; int left_to_right = 0; for (int i = 0; i < m; i++) { int fr, to; cin >> fr >> to; if (fr < to) { left_to_right += 1; } edges.push_back({fr, to}); } cout << "YES\n"; bool leave_left_to_right = true; if ((m - left_to_right) > left_to_right) { leave_left_to_right = false; cout << (m - left_to_right) << '\n'; } else { cout << left_to_right << '\n'; } for (int i = 0; i < m; i++) { if ((edges[i].fr < edges[i].to) == leave_left_to_right) { cout << (i + 1) << " "; } } cout << '\n'; }