#include <iostream>
#include <vector>
void beolvas(std::istream &in, std::vector<std::pair<int, int>> &vonatok, int &allomasok) {
size_t n;
in >> n >> allomasok;
for (auto i = 0u; i < n; i++) {
int honnan, hova;
in >> honnan >> hova;
vonatok.emplace_back(honnan, hova);
}
}
void feldolgoz(const std::vector<std::pair<int, int>> &vonatok, int allomasok) {
const auto n = vonatok.size();
std::vector<int> csatlakozasok(allomasok + 1, -1);
for (auto i = 0u; i < n; i++) {
auto [honnan, hova] = vonatok[i];
if (csatlakozasok[honnan] == -1 || vonatok[csatlakozasok[honnan]].second < hova) {
csatlakozasok[honnan] = i;
}
}
int akt_vegallomas = 1;
int atsz_vonat = -1;
std::vector<int> atszallasok;
for (auto poz = 1; poz <= allomasok; poz++) {
if (poz > akt_vegallomas) {
if (atsz_vonat == -1 || vonatok[atsz_vonat].second < poz) {
break;
}
akt_vegallomas = vonatok[atsz_vonat].second;
atszallasok.push_back(atsz_vonat);
}
if (csatlakozasok[poz] != -1 && (atsz_vonat == -1 || vonatok[atsz_vonat].second < vonatok[csatlakozasok[poz]].second)) {
atsz_vonat = csatlakozasok[poz];
}
}
if (akt_vegallomas == allomasok) {
std::cout << atszallasok.size() - 1 << std::endl;
for (auto v : atszallasok) {
std::cout << v + 1 << ' ';
}
std::cout << std::endl;
} else {
std::cout << "-1\n";
}
}
int main() {
std::vector<std::pair<int, int>> vonatok;
int allomasok;
beolvas(std::cin, vonatok, allomasok);
feldolgoz(vonatok, allomasok);
return 0;
}