#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
inline void rd(int &x){
  int k;
  int m=0;
  x=0;
  for(;;){
    k = getchar_unlocked();
    if(k=='-'){
      m=1;
      break;
    }
    if('0'<=k&&k<='9'){
      x=k-'0';
      break;
    }
  }
  for(;;){
    k = getchar_unlocked();
    if(k<'0'||k>'9'){
      break;
    }
    x=x*10+k-'0';
  }
  if(m){
    x=-x;
  }
}
inline void wt_L(char a){
  putchar_unlocked(a);
}
inline void wt_L(int x){
  int s=0;
  int m=0;
  char f[10];
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
int N;
int K;
int M;
int A[100];
int main(){
  int res;
  rd(N);
  rd(K);
  rd(M);
  {
    int Lj4PdHRW;
    for(Lj4PdHRW=(0);Lj4PdHRW<(N-1);Lj4PdHRW++){
      rd(A[Lj4PdHRW]);
    }
  }
  {
    int e98WHCEY;
    int cTE1_r3A;
    if(N-1==0){
      cTE1_r3A = 0;
    }
    else{
      cTE1_r3A = A[0];
      for(e98WHCEY=(1);e98WHCEY<(N-1);e98WHCEY++){
        cTE1_r3A += A[e98WHCEY];
      }
    }
    res = N*M-cTE1_r3A;
  }
  if(res < 0){
    res = 0;
  }
  if(res > K){
    res = -1;
  }
  wt_L(res);
  wt_L('\n');
  return 0;
}
// cLay varsion 20200112-1

// --- original code ---
// int N, K, M, A[100];
// {
//   int res;
//   rd(N,K,M,A(N-1));
//   res = N*M-sum(A(N-1));
//   if(res < 0) res = 0;
//   if(res > K) res = -1;
//   wt(res);
// }

#include <bits/stdc++.h>
using namespace std;
const long long mod1 = 1000000007;
using ll = long long;
using graph = vector<vector<int>>;
vector<ll> dx = {0,-1,0,1};
vector<ll> dy = {-1,0,1,0};

long long pow(long x,long n){
    long long ans = 1;
    while(n != 0){
        long long a = x;
        long long z = 1;
        while(z*2 <= n){
            a *=a;
            a=a%mod1;
            z*=2;
        }
        ans*=a;
        ans=ans%mod1;
        n-=z;
    }
    return ans; 
}//累乗 x^n

template<typename T>
void input_vec(vector<T> &A,long long N){
    for(int i = 0; i < N; i++){
        cin >> A.at(i);
    }
    return;
}//入力を配列で受け取る

template<typename T>
void output_vec(vector<T> &A,long long N){
    for(int i = 0; i < N; i++){
        if(i != 0){
            cout << " ";
        }
        cout << A.at(i);
    }
    cout << endl;
    return;
}//配列を出力

template<typename T>
long long count_vec(vector<T> &A,T x){
    long long counter = 0;
    for(int i = 0; i < (int)A.size(); i++){
        if(A.at(i) == x){
            counter++;
        }
    }
    return counter;
}//配列内のxの個数をreturn


vector<char> change_vec(string s,int n){
    vector<char> ans(n);
    for(int i = 0; i < n; i++){
        ans.at(i) = s.at(i);
    }
    return ans;
}//長さがnの文字列を配列に変換

vector<ll> change_vec2(ll x){
    vector<ll> ans;
    while(x != 0){
        ans.push_back(x%10);
        x/=10;
    }
    return ans;
}//数列を配列に変換

ll sort_big(ll x){
    vector<ll> vec = change_vec2(x);
    sort(vec.begin(),vec.end());
    ll ans = 0;
    for(int i = (int)vec.size()-1; i >= 0 ; i--){
        ans += vec.at(i);
        if(i != 0) ans*=10;
    }
    return ans;
    
}//桁ごとに大きい順に並べ替え

ll sort_small(ll x){
    vector<ll> vec = change_vec2(x);
    sort(vec.begin(),vec.end());
    ll ans = 0;
    for(int i = 0; i < (int)vec.size();i++){
        ans += vec.at(i);
        if(i+1 != (int)vec.size()) ans*= 10;
    }
    return ans;
}//桁ごとに小さい順に並べ替え

int main(){
    string C; cin >> C;
    bool ans = false;
    if(C.at(0) == C.at(1) && C.at(0) == C.at(2)) ans = true;
    
    if(ans) cout << "Won" << endl;
    else cout << "Lost" << endl;
    
}