万能方块可视为这排方块的最后一块,移动方块就相当于让队尾的方块移动到队首。所以这题就相当于求首尾方块和的最大值。当首为1时,尾为n+1;首为n+1时,尾为n;首为n时,尾为n-1;首为n-1时,尾为n-2。可以得出除了首为1时,尾都是首减去1。 下面是代码:

#include<bits/stdc++.h>
#define int long long
int a[200005];
using namespace std;
signed main(){
    int T;
    cin>>T;
    while(T--){
        int n,mx=0;
        cin>>n;
        int N=n+1;
        cin>>a[N];
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        for(int r=n+1;r>=1;r--){
            int l=r+1;
            if(r==n+1)l=1;
            mx=max(mx,a[l]+a[r]);
        }
        cout<<mx<<endl;
    }
}