#include<map> #include<queue> #include<time.h> #include<limits.h> #include<cmath> #include<ostream> #include<iterator> #include<set> #include<stack> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(i,m,n) for(int i=m;i<=n;i++) #define mem(st) memset(st,0,sizeof st) int read() { int res=0,ch,flag=0; if((ch=getchar())=='-') //判断正负 flag=1; else if(ch>='0'&&ch<='9') //得到完整的数 res=ch-'0'; while((ch=getchar())>='0'&&ch<='9') res=res*10+ch-'0'; return flag?-res:res; } typedef long long ll; typedef pair<int,int> pii; typedef unsigned long long ull; typedef pair<double,double> pdd; const int inf = 0x3f3f3f3f; const int maxn=1e6+10; ll a[maxn],dp[maxn],s[maxn],x[maxn],y[maxn],n,dp2[maxn]; void solve() { ll n=read(); ll tmp=0,ans=0; for(int i=1; i<=n; i++) a[i]=read(); for(int i=1; i<=n; i++) if(i&1) tmp+=a[i]; //找一段区间 使得 区间内偶数位的和 减去 奇数位的和 的差值最大 for(int i=2; i<=n; i+=2) x[i]=a[i]-a[i-1],y[i]=a[i]-a[i+1]; for(int i=2; i<=n; i+=2) dp[i]=max(0ll,dp[i-2]+x[i]),dp2[i]=max(0ll,dp2[i-2]+y[i]); for(int i=2; i<=n; i+=2) ans=max(ans,dp[i]); for(int i=2; i<=n-1; i+=2) ans=max(ans,dp2[i]); printf("%lld ",ans+tmp); for(int i=1;i<=n;i++) dp[i]=0,dp2[i]=0; } signed main() { int t; cin>>t; while(t--) solve(); return 0; }