#include <stdio.h>
#include<math.h>
#include<stdlib.h>
#define lli long long int
#define mod 1000000007
int cmp(const void *a1,const void *b1)
{
int g,h;
if(h-g!=0)
return h-g;
else
{
if(*(int*)a1>*(int*)b1)
{
return -1;
}
else
return 1;
}
}
int main()
{
int n,t,i,j,k,pflag=0;
lli prod1,prod2,c1;
while(t--)
{
pflag=0;
prod1=1;
prod2=1;
lli a[n];
for(i=0;i<n;i++)
{
if(a[i]>=0)
pflag=1;
}
qsort(a
,n
,sizeof(a
[0]),cmp
); // sort decreasing order for(i=0;i<k;i++)
{
prod1= ((prod1%mod)*(a[i]%mod))%mod;
}
if(prod1<=0)
{
if(pflag==0 || k==n) // has no positive no.
{
prod1=1;
for(i=n-k;i<n;i++)
{
lli c1= mod+(a[i]%mod);
prod1= ((prod1%mod) * c1 )%mod;
}
}
else if(k<n && pflag==1)
{ // both positive and negative
// nos.trying to find max.product
lli maxn=0;
lli maxp=0;
lli temp[k];
prod1=1;
prod2=1;
for(i=0;i<k;i++)
temp[i]=a[i];
for(i=k;i<n;i++)
{
if(a[i]<0)
{
maxn=a[i];
}
else if(a[i]>maxp)
maxp=a[i];
}
for(i=k-1;i>=0;i--)
if(a[i]>0)
{
temp[i]=maxn;
break;
}
for(i=k-1;i>=0;i--)
if(a[i]<0)
{
a[i]=maxp;
break;
}
for(i=0;i<k;i++)
{
if(a[i]%mod<0)
c1=mod+(a[i]%mod);
else
c1= a[i]%mod;
prod1= ((prod1%mod)*(c1%mod))%mod;
}
for(i=0;i<k;i++)
{
if(a[i]%mod<0)
c1=mod+(temp[i]%mod);
else
c1= temp[i]%mod;
prod2= ((prod2%mod)*(c1%mod))%mod;
}
//printf("p1=%lld p2=%lld ",prod1,prod2);
if(prod2>prod1)
prod1=prod2;
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlPG1hdGguaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwppbnQgY21wKGNvbnN0IHZvaWQgKmExLGNvbnN0IHZvaWQgKmIxKQp7CglpbnQgZyxoOwoJZz0oaW50KWFicygqKGludCAqKWExKTsKCWg9KGludClhYnMoKihpbnQgKiliMSk7CglpZihoLWchPTApCglyZXR1cm4gaC1nOwoJZWxzZQoJewoJCWlmKCooaW50KilhMT4qKGludCopYjEpCgkJewoJCQlyZXR1cm4gLTE7CgkJfQoJCWVsc2UgCgkJCXJldHVybiAxOwoJfQp9CmludCBtYWluKCkKewogICBpbnQgbix0LGksaixrLHBmbGFnPTA7CiAgIGxsaSBwcm9kMSxwcm9kMixjMTsKICAgc2NhbmYoIiVkIiwmdCk7CiAgIHdoaWxlKHQtLSkKICAgewogICAgICAgcGZsYWc9MDsKICAgICAgIHByb2QxPTE7CiAgICAgICBwcm9kMj0xOwogICAgICAgc2NhbmYoIiVkICVkIiwmbiwmayk7CiAgICAgICBsbGkgYVtuXTsKICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgIHsKICAgICAgIHNjYW5mKCIlbGxkIiwmYVtpXSk7CiAgICAgICBpZihhW2ldPj0wKQogICAgICAgcGZsYWc9MTsKICAgICAgIH0KICAgICAgIHFzb3J0KGEsbixzaXplb2YoYVswXSksY21wKTsgICAgICAgICAgICAgICAgICAgIC8vIHNvcnQgZGVjcmVhc2luZyBvcmRlcgogICAgICAgZm9yKGk9MDtpPGs7aSsrKQogICAgICAgewogICAgICAgcHJvZDE9ICgocHJvZDElbW9kKSooYVtpXSVtb2QpKSVtb2Q7CiAgICAgICB9CiAgICAgICBpZihwcm9kMTw9MCkKICAgICAgIHsKICAgICAgICAgICBpZihwZmxhZz09MCB8fCBrPT1uKSAgICAgICAgICAvLyBoYXMgbm8gcG9zaXRpdmUgbm8uCiAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJvZDE9MTsKICAgICAgICAgICAgICAgIGZvcihpPW4taztpPG47aSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbGxpIGMxPSBtb2QrKGFbaV0lbW9kKTsKICAgICAgICAgICAgICAgcHJvZDE9ICgocHJvZDElbW9kKSAqIGMxICklbW9kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmKGs8biAmJiBwZmxhZz09MSkKICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3RoIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3MudHJ5aW5nIHRvIGZpbmQgbWF4LnByb2R1Y3QgICAgICAgIAogICAgICAgICAgICAgICAgbGxpIG1heG49MDsKICAgICAgICAgICAgICAgIGxsaSBtYXhwPTA7CiAgICAgICAgICAgICAgICBsbGkgdGVtcFtrXTsKICAgICAgICAgICAgICAgIHByb2QxPTE7CiAgICAgICAgICAgICAgICBwcm9kMj0xOwogICAgICAgICAgICAgICAgZm9yKGk9MDtpPGs7aSsrKQogICAgICAgICAgICAgICAgdGVtcFtpXT1hW2ldOwogICAgICAgICAgICAgICAgZm9yKGk9aztpPG47aSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmKGFbaV08MCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZhYnMoYVtpXSk+ZmFicyhtYXhuKSkKICAgICAgICAgICAgICAgICAgICAgICAgbWF4bj1hW2ldOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGFbaV0+bWF4cCkKICAgICAgICAgICAgICAgICAgICBtYXhwPWFbaV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IoaT1rLTE7aT49MDtpLS0pCiAgICAgICAgICAgICAgICBpZihhW2ldPjApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGVtcFtpXT1tYXhuOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yKGk9ay0xO2k+PTA7aS0tKQogICAgICAgICAgICAgICAgaWYoYVtpXTwwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFbaV09bWF4cDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvcihpPTA7aTxrO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGFbaV0lbW9kPDApCgkJICAgICAgICAgICAgYzE9bW9kKyhhW2ldJW1vZCk7CiAgICAgICAgICAgIAllbHNlCgkJICAgICAgICAgICAgYzE9IGFbaV0lbW9kOwogICAgICAgICAgICAgICAgcHJvZDE9ICgocHJvZDElbW9kKSooYzElbW9kKSklbW9kOwogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgIGZvcihpPTA7aTxrO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaWYoYVtpXSVtb2Q8MCkKCQkgICAgICAgICAgICBjMT1tb2QrKHRlbXBbaV0lbW9kKTsKCSAgICAgICAgICAgICAgZWxzZQoJCSAgICAgICAgICAgIGMxPSB0ZW1wW2ldJW1vZDsKICAgICAgICAgICAgICAgIHByb2QyPSAoKHByb2QyJW1vZCkqKGMxJW1vZCkpJW1vZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAvL3ByaW50ZigicDE9JWxsZCBwMj0lbGxkICIscHJvZDEscHJvZDIpOwogICAgICAgICAgIGlmKHByb2QyPnByb2QxKQogICAgICAgICAgIHByb2QxPXByb2QyOwogICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICBwcmludGYoIiVsbGRcbiIscHJvZDEpOwogICB9CiAgICByZXR1cm4gMDsKfQo=