#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long> > pocetak, kraj;
vector<long long> unos(200005);
int main() {
  int n;
  cin >> n;
  long long res = 0, proba, najmanji = 100000000000, koliko = 0, prva_pozicija,
            druga_pozicija;
  for (int i = 0; i < n; i++) {
    cin >> unos[i];
    najmanji = min(najmanji, unos[i]);
  }
  for (int i = 0; i < n; i++) {
    koliko += (unos[i] == najmanji);
    if (koliko == 1) prva_pozicija = i;
    if (koliko == 2) {
      druga_pozicija = i;
      break;
    }
  }
  pocetak.push_back(make_pair(unos[0], 0));
  for (int i = 1; i < n; i++)
    if (unos[i] < pocetak[i - 1].first)
      pocetak.push_back(make_pair(unos[i], i));
    else
      pocetak.push_back(pocetak.back());
  kraj.resize(n);
  kraj[n - 1] = make_pair(unos[n - 1], n - 1);
  for (int i = n - 2; i >= 0; i--)
    if (unos[i] <= kraj[i + 1].first)
      kraj[i] = make_pair(unos[i], i);
    else
      kraj[i] = kraj[i + 1];
  for (int i = 0; i < n; i++) {
    if (pocetak[i].first <= kraj[i].first) {
      proba = pocetak[i].first * n;
      if (kraj[i].first > pocetak[i].first)
        proba += (pocetak[i].second + (n - i));
      else if (kraj[i].first == pocetak[i].first)
        proba += (kraj[i].second - i);
      res = max(res, proba);
    } else {
      proba = kraj[i].first * n + kraj[i].second;
      res = max(res, proba);
    }
  }
  cout << res << endl;
  return 0;
}
