#include #include using namespace std ; typedef long long LL ; const int MAXN = 300005 ; int a[MAXN] ; int n ; LL v[MAXN] ; int vk[MAXN] ; int L[MAXN] , R[MAXN] ; int S[MAXN] , top ; void solve () { scanf ( "%d" , &n ) ; for ( int i = 1 ; i <= n ; ++ i ) { scanf ( "%d", &a[i] ) ; } LL ans = 0 ; for ( int i = 1 ; i <= n ; ++ i ) { int m = n / i ; for ( int j = 1 ; j <= m ; ++ j ) { v[j] = a[j * i] ; } v[0] = v[m + 1] = 0 ; S[top = 0] = 0 ; for ( int j = 1 ; j <= m ; ++ j ) { while ( v[S[top]] >= v[j] ) --top ; L[j] = S[top] + 1 ; S[++ top] = j ; } S[top = 0] = m + 1 ; for ( int j = m ; j >= 1 ; -- j ) { while ( v[S[top]] >= v[j] ) --top ; R[j] = S[top] - 1 ; S[++ top] = j ; } for ( int j = 1 ; j <= m ; ++ j ) { v[j] += v[j - 1] ; } for ( int j = 1 ; j <= m ; ++ j ) { ans = max ( ans , a[j * i] * ( v[R[j]] - v[L[j] - 1] ) * vk[i] ) ; } } printf ( "%I64d\n" , ans ) ; } int main () { int T ; for ( int i = 1 ; i * i < MAXN ; ++ i ) { vk[i * i] = i ; if ( !vk[i] ) vk[i] = vk[i - 1] ; } scanf ( "%d" , &T ) ; for ( int i = 1 ; i <= T ; ++ i ) { solve () ; } return 0 ; }