#include <iostream>
#include <vector>
#include <cstdint>
using Tavolsagok = std::vector<int>;
void beolvas(std::istream &be, int &s, int &t, Tavolsagok &telepulesek) {
int n;
be >> n >> s >> t;
telepulesek.resize(n);
for (auto &tt : telepulesek) {
be >> tt;
}
}
void feldolgoz(int s, int t, const Tavolsagok &telepulesek) {
const auto n = static_cast<int>(telepulesek.size());
const auto telephely_poz = telepulesek[s - 1];
std::vector<int> tuzijatekok;
auto vege = 0;
for (auto i = 0; telepulesek[i] + t <= telephely_poz; i++) {
if (vege <= telepulesek[i]) {
tuzijatekok.push_back(i + 1);
vege = telepulesek[i] + t;
}
}
tuzijatekok.push_back(s);
vege = telephely_poz + t;
for (auto i = s; i < n; i++) {
if (vege <= telepulesek[i]) {
tuzijatekok.push_back(i + 1);
vege = telepulesek[i] + t;
}
}
using std::cout;
cout << tuzijatekok.size() << '\n';
for (auto tindex : tuzijatekok) {
cout << tindex << ' ';
}
cout << '\n';
}
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int s;
int t;
Tavolsagok telepulesek;
beolvas(std::cin, s, t, telepulesek);
feldolgoz(s, t, telepulesek);
return 0;
}