// Nemes2.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <algorithm>
#include <climits>
#include <vector>
#include <queue>
#include <unordered_set>
using namespace std;
int DFS(int a, vector<vector<int>>& graph, int cameFrom) {
for (size_t i = 0; i < graph[a].size(); i++)
{
if (graph[a][i] != cameFrom) {
DFS(graph[a][i], graph, a);
}
}
return 0;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int v,m;
cin >> v >> m;
vector<pair<int, int>> vonatok;
vector<pair<int,int>> MaxDist(m+1); //MaxDist, TrainNum
for (size_t i = 0; i < v; i++)
{
int a, b;
cin >> a >> b;
vonatok.push_back({ a,b });
if (MaxDist[a].first < b) MaxDist[a] = { b,i };
}
int curMaxDist = 1;
vector<int> Trains;
int potMaxDist = -1;
int potMaxIndex = -1;
for (size_t i = 0; i < m; i++)
{
if (i == curMaxDist) {
if (potMaxDist <= i) {
cout << "-1";
return 0;
}
curMaxDist = potMaxDist;
Trains.push_back(potMaxIndex);
}
if (potMaxDist < MaxDist[i+1].first) {
potMaxDist = MaxDist[i+1].first;
potMaxIndex = MaxDist[i+1].second;
}
}
cout << Trains.size()-1 << "\n";
for (size_t i = 0; i < Trains.size(); i++)
{
cout << Trains[i] + 1 << " ";
}
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file