#include <bits/stdc++.h>
using namespace std;
int intervalrecur(int *a,int start,int end,int *b,int m,int turn,int *pre)
{
int sol;
if(turn==(m+1))
{
return 0;
}
if((turn%2)==1)
{
sol=INT_MIN;
for(int i=start,j=(start+b[turn]-1);j<end;i++,j++)
{
sol=max(sol,intervalrecur(a,i,i+b[turn],b,m,turn+1,pre)+(pre[j]-pre[i-1]));
}
}
else if((turn%2)==0)
{
sol=INT_MAX;
for(int i=start,j=(start+b[turn]-1);j<end;i++,j++)
{
sol=min(sol,intervalrecur(a,i,i+b[turn],b,m,turn+1,pre)-(pre[j]-pre[i-1]));
}
}
return sol;
}
int interval(int *a,int n,int *b,int m)
{
int *pre=new int[n+1];
for(int i=0;i<=n;i++)
{
pre[i]=0;
}
for(int i=1;i<=n;i++)
{
pre[i]=a[i]+pre[i-1];
}
int res=intervalrecur(a,1,n+1,b,m,1,pre);
return res;
}
int main()
{
int *a,*b,n,m,t;
cout<<"t"<<"\n";
cin>>t;
while(t--)
{
cout<<"n?"<<"\n";
cin>>n;
cout<<"m?"<<"\n";
cin>>m;
a=new int[n+1];
b=new int[m+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
cout<<"optimal "<<interval(a,n,b,m)<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgaW50ZXJ2YWxyZWN1cihpbnQgKmEsaW50IHN0YXJ0LGludCBlbmQsaW50ICpiLGludCBtLGludCB0dXJuLGludCAqcHJlKQp7CglpbnQgc29sOwoJaWYodHVybj09KG0rMSkpCgl7CgkJcmV0dXJuIDA7Cgl9CgkKCWlmKCh0dXJuJTIpPT0xKQoJewoJCXNvbD1JTlRfTUlOOwoJCWZvcihpbnQgaT1zdGFydCxqPShzdGFydCtiW3R1cm5dLTEpO2o8ZW5kO2krKyxqKyspCgkJewogICAgICAgICAgIHNvbD1tYXgoc29sLGludGVydmFscmVjdXIoYSxpLGkrYlt0dXJuXSxiLG0sdHVybisxLHByZSkrKHByZVtqXS1wcmVbaS0xXSkpOwoJCX0KCX0KCWVsc2UgaWYoKHR1cm4lMik9PTApCgl7CgkJc29sPUlOVF9NQVg7CgkJZm9yKGludCBpPXN0YXJ0LGo9KHN0YXJ0K2JbdHVybl0tMSk7ajxlbmQ7aSsrLGorKykKCQl7CiAgICAgICAgICAgc29sPW1pbihzb2wsaW50ZXJ2YWxyZWN1cihhLGksaStiW3R1cm5dLGIsbSx0dXJuKzEscHJlKS0ocHJlW2pdLXByZVtpLTFdKSk7CgkJfQoJfQoJcmV0dXJuIHNvbDsKfQoKaW50IGludGVydmFsKGludCAqYSxpbnQgbixpbnQgKmIsaW50IG0pCnsKICAgaW50ICpwcmU9bmV3IGludFtuKzFdOwogICBmb3IoaW50IGk9MDtpPD1uO2krKykKICAgewogICAJICBwcmVbaV09MDsKICAgfQoKICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgIHsKICAgCSAgcHJlW2ldPWFbaV0rcHJlW2ktMV07CiAgIH0KICAgaW50IHJlcz1pbnRlcnZhbHJlY3VyKGEsMSxuKzEsYixtLDEscHJlKTsKICAgcmV0dXJuIHJlczsgCn0KCmludCBtYWluKCkKewoJaW50ICphLCpiLG4sbSx0OwoJY291dDw8InQiPDwiXG4iOwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJIGNvdXQ8PCJuPyI8PCJcbiI7CgkgY2luPj5uOwoJIGNvdXQ8PCJtPyI8PCJcbiI7CgkgY2luPj5tOwoJIGE9bmV3IGludFtuKzFdOwoJIGI9bmV3IGludFttKzFdOwoJIGZvcihpbnQgaT0xO2k8PW47aSsrKQoJIHsKCSAJY2luPj5hW2ldOwoJIH0KCSBmb3IoaW50IGk9MTtpPD1tO2krKykKCSB7CgkgCWNpbj4+YltpXTsKCSB9CgkgY291dDw8Im9wdGltYWwgIjw8aW50ZXJ2YWwoYSxuLGIsbSk8PCJcbiI7Cgl9CglyZXR1cm4gMDsKfQ==