#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int T,n,a[N];
long long dp[2][N],mx[2];
int read(){
int ff=1,kk=0;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')ff=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
kk=kk*10+ch-'0';
ch=getchar();
}
return ff*kk;
}
int main(){
//cout<<log2(1000000000000000);50...
// freopen("color.in","r",stdin);
// freopen("color.out","w",stdout);
T=read();
while(T--){
n=read();
memset(dp,0xcf,sizeof dp);
for(int i(1);i<=n;++i){
a[i]=read();
if(i==1){
dp[0][0]=0;mx[0]=0;//mxx[0]=0;
dp[1][0]=0;mx[1]=0;//mxx[1]=0;
}
else{
if(a[i]!=a[i-1]){
long long qwq1=dp[1][a[i]],qwq0=dp[0][a[i]];
dp[0][a[i-1]]=max(mx[1],qwq1+a[i]);
dp[1][a[i-1]]=max(mx[0],qwq0+a[i]);
dp[0][a[i]]=qwq0+a[i];
dp[1][a[i]]=qwq1+a[i];
mx[0]=max(mx[0],max(dp[0][a[i-1]],dp[0][a[i]]));
mx[1]=max(mx[1],max(dp[1][a[i-1]],dp[1][a[i]]));
}
else{
long long qwq=max(dp[1][a[i]],dp[0][a[i]]);
dp[0][a[i]]=max(mx[1],max(qwq,mx[0])+a[i]);
dp[1][a[i]]=max(mx[0],max(qwq,mx[1])+a[i]);
mx[0]=max(mx[0],max(dp[0][a[i-1]],dp[0][a[i]]));
mx[1]=max(mx[1],max(dp[1][a[i-1]],dp[1][a[i]]));
}
}
//cout<<mx[0]<<" "<<mx[1]<<'\n';
}
printf("%lld\n",max(mx[0],mx[1]));
}
return 0;
}
RT.现在要回去准备期中考没时间看。
thx qwq