#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int n, m, p, a[N];
string a1, a2;
map<int, int> mp;
signed main()
{
cin >> n >> m >> p;
for (int i = 1; i <= n; i++) {
cin >> a[i];
mp[a[i]] = i;
}
int x = a[p];
sort(a + 1, a + n + 1);
int pos = lower_bound(a + 1, a + n + 1, 0) - a;
int o, r = -9e18, l = r + 1;
for(int i = pos; i <= n; i++) {
if(a[i] < x || x < a[pos])
o = upper_bound(a + 1, a + n + 1, (2*a[i]-m) / 2) - a;
else
o = upper_bound(a + 1, a + n + 1, (2*a[i]-m-5) / 2) - a;
if(i - o > r - l)
r = i, l = o;
}
if(r != 9e18)
for(int i = l; i <= r; i++)
a1 += to_string(mp[a[i]]) + " ";
r = 9e18, l = r + 1;
for(int i = 1; a[i] <= 0; i++) {
o = -1e18;
if(a[i] > x || (x >= a[pos] && x != 0) || x > a[pos])
o = upper_bound(a + 1, a + n + 1, (m+2*a[i]) / 2) - a - 1;
else if(5+m+2*a[i] >= 0)
o = upper_bound(a + 1, a + n + 1, (5+m+2*a[i]) / 2) - a - 1;
if(o - i > r - l)
r = o, l = i;
}
if(r != 9e18)
for(int i = l; i <= r; i++)
a2 += to_string(mp[a[i]])+" ";
if(a1.size() > a2.size())
cout << a1.size() / 2 << endl << a1 << endl;
else if(a2.size() > a1.size())
cout << a2.size() / 2 << endl << a2 << endl;
else if(a1 < a2)
cout << a1.size() / 2 << endl << a1 << endl;
else
cout << a2.size() / 2 << endl << a2 << endl;
return 0;
}