dpをします。

  • dp[l][r]=dp[l][r]= 区間 [l,r][l,r] でこの問題を解いた時の解

とします。
この値は、 l<i<rl<i<r に対して以下の値を計算した時の最大値です。

  • 2×max2×\rm{max} (dp[l][i1],dp[i+1][r])+min(dp[l][i-1],dp[i+1][r])+\rm{min} (dp[l][i1],dp[i+1][r])+max(dp[l][i-1],dp[i+1][r])+\rm{max} (Ai1,Ai+1)(A_{i-1},A_{i+1}) mod \rm{mod} min\rm{min} (Ai1,Ai+1)(A_{i-1},A_{i+1})

計算量は O(N3)O(N^3) です。