#include <bits/stdc++.h>
using namespace std;
long long int vis[16][16];
long long int find(vector<long long int> &v, long long int i, long long int j) {
  if (i > j) return 0;
  if (i == j) return 1;
  if (i + 1 == j) {
    if (v[i] < v[j])
      return 2;
    else
      return 1;
  }
  long long int mid = (i + j) / 2;
  if (vis[i][j] != -1) return vis[i][j];
  long long int f = 1;
  for (int ii = i + 1; ii <= j && f; ii++) {
    if (v[ii] < v[ii - 1]) f = 0;
  }
  if (f) return vis[i][j] = j - i + 1;
  return vis[i][j] = max(find(v, i, mid), find(v, mid + 1, j));
}
void solve() {
  memset(vis, -1, sizeof(vis));
  long long int n;
  cin >> n;
  vector<long long int> v(n);
  for (long long int i = 0; i < n; i++) cin >> v[i];
  cout << find(v, 0, n - 1);
}
int main() {
  long long int t = 1;
  while (t--) {
    solve();
    cout << endl;
  }
  return 0;
}
