#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996);
int main() {
int* sz;
int* sz_m;
int i;
int ii;
int n, m;
int wj_i = 0;
int js = 0;
int S[10] = { 0 };
while (1) {
while(1){
scanf("%d %d", &n, &m);
if (n == 0 && m == 0) {
js = 1;
break;
}
if (m >= 1 && n >= m && n <= 2000) break;
else printf("不符号输入要求1<=m<=n<=2000\n请重新输入:\n\r");
}
if (js == 1) break;
sz = (int*)malloc(n * (sizeof(int)));
sz_m = (int*)malloc(m * (sizeof(int)));
for ( i = 0; i < n; i++) {
scanf("%d", &sz[i]);
if (i < m) sz_m[i] = 1;
}
for ( i = 0; i < n; i++) {
for ( ii = 1; ii < n; ii++) {
if (sz[ii] <= sz[ii - 1]) {
int min = sz[ii - 1];
sz[ii - 1] = sz[ii];
sz[ii] = min;
}
}
}
int O = 0;
int F = 0;
for ( i = 0; i < n; i++) {
if (sz[i] > 0);
else if (sz[i] == 0) O++;
else if (sz[i] < 0) F++;
}
if (m == 1) {
for ( i = 0; i < n; i++) {
sz_m[0] = sz_m[0] * sz[i];
}
}
else if (F % 2 == 0) {
for ( i = 0; i < n; i++) {
if (sz[i] != 0) sz_m[0] = sz_m[0] * sz[i];
else sz_m[1] = sz_m[1] * sz[i];
}
}
else if (F % 2 == 1) {
for ( i = 0; i < n; i++) {
if (sz[i] != 0 && i != 0+F) sz_m[0] = sz_m[0] * sz[i];
else sz_m[1] = sz_m[1] * sz[i];
}
}
for ( i = 0; i < m; i++) {
S[wj_i] = S[wj_i] + sz_m[i];
}
wj_i++;
if (wj_i >= 10) break;
free(sz);
free(sz_m);
}
for ( i = 0; i < wj_i; i++) {
printf("%d\n", S[i]);
}
return 0;
}