Alice and Bob are playing a game. They are given an array A of length N. The array consists of integers. They are building a sequence together. In the beginning, the sequence is empty. In one turn a player can remove a number from the left or right side of the array and append it to the sequence. The rule is that the sequence they are building must be strictly increasing. The winner is the player that makes the last move. Alice is playing first. Given the starting array, under the assumption that they both play optimally, who wins the game?

Input

The first line contains one integer N (1 ≤ N ≤ 2*10^5) - the length of the array A.

The second line contains N integers A_1, A_2,...,A_N (0 ≤ A_i ≤ 10^9)

Output

The first and only line of output consists of one string, the name of the winner. If Alice won, print "Alice", otherwise, print "Bob".

Examples

Input


1
5


Output


Alice


Input


3
5 4 5


Output


Alice


Input


6
5 8 2 1 10 9


Output


Bob
3
5 6 5
 2
5 12

Bob
 Alice

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define I_AM_SPEED ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);init_code();
#define asc(i,x,n) for(I i=x;i<n;i++)
#define dsc(i,x,n) for(I i=x;i>=n;i--)
#define all(x) (x).begin(),(x).end()
#define W(t) int t;cin>>t;while(t--)
#define printa(x); for(A n:x){cout<<n<<" ";}cout<<"\n";
#define printp(x); for(A n:x){cout<<n.ff<<" "<<n.ss<<"\n";}
#define U unsigned
#define I long long
#define S string
#define C char
#define D long double
#define A auto
#define B bool
#define yes cout<<"YES\n";
#define no cout<<"NO\n";
#define ff first 
#define ss second
#define pb push_back
#define mp make_pair
#define OS(x) set<x>
#define OM(x,y) map<x,y>
#define V(x) vector<x>
#define VP(x,y) vector<pair<x,y>>
#define lb lower_bound
#define ub upper_bound
#define debug(x) cout<<#x<<" is "<<x<<"\n"
#define sz(x) (I)x.size()
#define P(x,y) pair<x,y>
#define INF 1e13
#define PBS(x) tree<x,null_type,less_equal<I>,rb_tree_tag,tree_order_statistics_node_update>
#define PBM(x,y) tree<pair<x, y>, null_type,less<pair<x, y> >,rb_tree_tag, tree_order_statistics_node_update>
#define digits(n) floor(log10(n)) + 1
#define isPerfectSq(x) ceil((D)sqrt((D)n))==floor((D)sqrt((D)n))
#define pi (D)acos(-1)
#define mod 1000000007
void init_code(){
  #ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  #endif
}
void solve(){
  I n;
  cin>>n;
  I a[n],i=0,cl=0,cr=0;
  for(i=0;i<n;i++)
  {
    cin>>a[i];     
  }
  for(i=0;i<n-1;i++)
  {
    if(a[i]<a[i+1])
      cl++;
    else
      break;
  }
  for(i=n-1;i>0;i++)
  {
    if(a[i]<a[i-1])
    {
      cr++;
    }
    else
      break;
  }
  if((cl+1)%2 || (cr+1)%2)
  {
    cout<<"Alice"<<endl;
    return;
  }
  cout<<"Bob"<<endl;
}
int main()
{
  I_AM_SPEED
  I t=1;
  // cin>>t; 
  while(t--)
    solve();
  return 0;

  // order_of_key(k) find_by_order(k);
}
        