use std::io::*;
use std::str::FromStr;

#[allow(dead_code)]
fn read<T: FromStr>() -> T {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok().expect("failed to parse token")
}

fn main() {
    let n = read::<usize>();
    let mut seq = vec![0; n];
    for i in 0..n {
        seq[i] = read::<i64>();
    }
    let ans = solve(&seq);
    println!("{}", ans);
}

fn solve(seq: &Vec<i64>) -> i64 {
    let n = seq.len();
    let mut ret = 0;
    let mut visit = vec![false; n];
    for skip in 1..n {
        let mut sum = 0;
        let mut max_k = 0;
        for k in 1..n {
            let a = n - 1 - skip * k;
            if a < skip {
                break;
            }
            let mut l = skip * k;
            if skip * k >= n - 1 {
                break;
            }
            let mut r = n - 1 - skip * k;
            if visit[l] || visit[r] || l == r {
                break;
            }
            visit[l] = true;
            visit[r] = true;
            sum += seq[l] + seq[r];
            ret = std::cmp::max(ret, sum);
            max_k = k;
        }
        for k in 1..(max_k + 1) {
            let mut l = skip * k;
            let mut r = n - 1 - skip * k;
            visit[l] = false;
            visit[r] = false;
        }
    }
    return ret;
}