/*
Date: 22/11/2015
Name:DAYSO9
Link: http://l...content-available-to-author-only...u.vn/Problem/Details/4483
Result: #28 - TLE
*/
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <utility>
#include <map>
#include <list>
#include <deque>

using namespace std;

#define FOR(i,a,b) for(int i=a; i<=b; i++)
#define Size first
#define stt second

typedef long long LL;
typedef pair<LL,LL> PLL;

LL n,A,G;
deque<PLL> ball;
vector<LL> track;

//Tim den cai Lon nhat < hon size, va chua bi an
LL Find(LL L,LL R,LL size){
	
	if(L > R){
		//cout<<"over : "<<L<<" - "<<R<<endl;
		return -1;
	}else{
		//Dieu kien tim thay la size[t] < size <= size[t+1]
		LL t = (L + R) / 2;
	
		//cout<<L<<" - "<<R<<" - "<<t<<endl;
		
		if(ball[t].Size < size){
			//Neu nho hon
			//Kiem tra xem co phai ko, neu khong phai thi tim len phia tren
			if(t == ball.size()-1){
				return t;
			}else{
				if(size <= ball[t+1].Size)
				{
					return t;
				}else{
					//Tim tiep ve phia tren
					return Find(t+1,R,size);
				}
				
				
			}
		}else{
			//Neu hien tai dang lon hon thi tim ve phia truoc
			return Find(L,t-1,size);
		}
	}
}

int main()
{
	
	cin>>n>>A>>G;
	LL s;
	if(A > G)
	{
		cout<<0<<endl;
		return 0;
	}
	FOR(i,0,n-1)
	{
		cin>>s;
		ball.push_back(make_pair(s,i+1));
	}
	
	sort(ball.begin(),ball.end());
	LL index = -1;
	do{
		index = Find(0,ball.size()-1,A);
		
		if(index != -1){
			
			A += ball[index].Size;
			track.push_back(ball[index].stt);
			ball.erase(ball.begin() + index);
			
			if(A > G){
				cout<<track.size()<<endl;
				FOR(i,0,track.size()-1)
					cout<<track[i]<<" ";
				return 0;
			}
		}
	}while(index != -1);
	cout<<-1<<endl;
	return 0;
}
