import java.util.ArrayList;
import java.util.Scanner;

public class BeautifulMountains_artur {
  public static void main(String[] args) throws Exception {
    Scanner in = new Scanner(System.in);

    ArrayList<Integer> primes = new ArrayList<Integer>();
    boolean[] v = new boolean[30001];
    for (int i = 2; i < v.length; i++)
      if (!v[i]) {
        if (i > 2)
          primes.add(i);
        for (int j = i * i; j < v.length; j += i)
          v[j] = true;
      }

    for (int n = in.nextInt(); n != 0; n = in.nextInt()) {
      int[] a = new int[n];
      for (int i = 0; i < n; i++)
        a[i] = in.nextInt();

      long[] l = new long[n], r = new long[n];
      long[] lsum = new long[n], rsum = new long[n];
      for (int i = 1, j = n - 2; i < n; i++, j--) {
        lsum[i] = lsum[i - 1] + a[i - 1];
        rsum[j] = rsum[j + 1] + a[j + 1];
        l[i] = l[i - 1] + lsum[i];
        r[j] = r[j + 1] + rsum[j];
      }

      long best = Long.MAX_VALUE;
      for (int i = 0; i < n; i++) {
        best = Math.min(best, l[i] + r[i]);
        if (i + 2 < n)
          best = Math.min(best, l[i] + r[i + 2] + a[i + 1]);

        for (int p : primes) {
          int j = i + p;
          if (j < n) {
            long temp = 0;
            int k = (i + j) / 2;
            temp += r[i] - r[k] - rsum[k] * (k - i);
            temp += l[j] - l[k + 1] - lsum[k + 1] * (j - k - 1);

            best = Math.min(best, temp + l[i] + r[j]);

            if (!v[p + 2]) {
              if (i > 1)
                best = Math.min(best, temp + r[j] + l[i - 2] + a[i - 1]);
              if (j < n - 2)
                best = Math.min(best, temp + l[i] + r[j + 2] + a[j + 1]);
              if (!v[p + 4] && i > 1 && j < n - 2)
                best = Math.min(best, temp + l[i - 2] + r[j + 2] + a[i - 1] + a[j + 1]);
            }
          } else
            break;
        }
      }
      System.out.println(best);
    }
  }
}
