#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,n) for(int i=0; i<(int)n; i++)
#define rep1(i,n) for(int i=1; i<(int)n; i++)
#define repa(i,a,n) for(int i=(a); i<(int)(n); i++)
#define all(vec) vec.begin(),vec.end()
#define COUT(x) cout<<(x)<<endl
#define YES(x) cout<<(x?"YES":"NO")<<endl
#define Yes(x) cout<<(x?"Yes":"No")<<endl
#define F first
#define S second
using vi = vector<int>;
using vs = vector<string>;
using vvi = vector<vi>;
using pii = pair<int, int>;
using vpii = vector<pii>;
const int dx[4] = {1, 0,-1, 0};
const int dy[4] = {0, 1, 0,-1};
int gcd(int a, int b){if(a%b == 0){return(b);}else{return(gcd(b, a%b));}}
int lcm(int a, int b){return a/gcd(a, b)*b;}
template <typename T> bool chmax(T &a,const T& b){if(a<b){a=b;return true;}return false;}
template <typename T> bool chmin(T &a,const T& b){if(a>b){a=b;return true;}return false;}
//cout << fixed << setprecision(15);
int N, M, K, H, W, X, Y;
string S,T;
const int INF = 1e18;
// const int mod = 1e9+7;

signed main(){
    cin >> N >> K >> M;
    int sum = 0;
    rep(i,N-1){
        int a; cin >> a;
        sum += a;
    }
    int ans = N*M - sum;
    if(ans>K)COUT(-1);
    else if(ans<=0)COUT(0);
    else COUT(ans);
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100];
int main(){
	ll n;
	scanf("%lld",&n);
	a[0]=1;a[1]=1;
	int i=1;
	while(a[i]+a[i-1]<=n)
	i++,a[i]=a[i-1]+a[i-2];        //a[i]<=n i的最小值 
	//cout<<i<<endl;
	ll res=i,k=n;
	for(int j=i;j>=1;j--){
		if(k>=a[j])
		k-=a[j],res++;            //是否可以插入a[i] 
	}
	printf("%d\n",res);
	for(int j=i;j>=1;j--){
		if(n>=a[j]){ 
			n-=a[j],printf("%d\n",(j&1)+1);                  //偶数步进行op1  结束进行op3 x+y->x    奇数步进行op2  结束进行op4 x+y->y 
		}
		printf("%d\n",((j-1)&1)+3);
	}
	return 0;
}