#include<bits/stdc++.h>
#define MAXN 200005
#define mod 1000000007
using namespace std;
int a[MAXN],zs = 0,fs = 0;
bool cmp(int a,int b) {
return a < b;
}
int main() {
int n,k; scanf("%d%d",&n,&k);
for(int i = 1;i <= n;i ++) scanf("%d",&a[i]);
sort(a + 1,a + 1 + n,cmp);
for(int i = 1;i <= n;i ++) {
if(a[i] < 0) fs ++;
else zs ++;
}
if(fs == n) {
long long sum = 1;
if(k % 2) for(int i = n;i >= n - k + 1;i --) sum = (sum % mod * a[i] % mod) % mod;
else for(int i = 1;i <= k;i ++) sum = (sum % mod * a[i] % mod) % mod;
printf("%lld",(sum % mod + mod) % mod);
return 0;
}
else if(n == k) {
long long sum = 1;
for(int i = 1;i <= n;i ++) sum = (sum % mod * a[i] % mod) % mod;
printf("%lld",(sum % mod + mod) % mod);
return 0;
}
else {
long long sum = 1;
int l = 1,r = n,tot = 0;
while(tot < k) {
if(tot != k - 1 && a[l] % mod * a[l + 1] % mod >= a[r] % mod * a[r - 1] % mod) {
sum = (sum % mod * a[l] % mod * a[l + 1] % mod) % mod;
l += 2;
tot += 2;
}
else {
sum = (sum % mod * a[r] % mod) % mod;
r --;
tot ++;
}
}
printf("%lld",(sum % mod + mod) % mod);
return 0;
}
}