#include <bits/stdc++.h>
int take() {
  int n;
  scanf("%d", &n);
  return n;
}
double ttake() {
  double n;
  scanf("%lf", &n);
  return n;
}
long long takes() {
  long long n;
  scanf("%lld", &n);
  return n;
}
int cas;
using namespace std;
bool approximatelyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool essentiallyEqual(float a, float b, float epsilon) {
  return fabs(a - b) <= ((fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyGreaterThan(float a, float b, float epsilon) {
  return (a - b) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool definitelyLessThan(float a, float b, float epsilon) {
  return (b - a) > ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
int main() {
  int mx = 0, n = take(), v;
  long long tot = 0;
  for (int i = 1; i <= n; i++) v = take(), mx = max(v, mx), tot += v;
  long long l = mx, h = 1000000000000000000;
  while (l <= h) {
    long long m = l + (h - l) / 2;
    long long p = ceil(tot / ((n - 1) * 1.00));
    if (m >= p && m >= mx) {
      h = m - 1;
    } else
      l = m + 1;
  }
  cout << h + 1 << "\n";
  { return 0; };
}
