#include <iostream>
using namespace std;
const long long N = 1e11;
long long a[1020],x[1020]; //a前缀和,x读入
long long n, m, maxn = -N, minn = N;
long long f1[120][120][12],f2[120][12][12]; //f1最小,f2最大
int main()
{
cin >> n >> m;
for (int i = 1; i <= 120; i++)
for (int j = 1; j <= 120; j++)
for (int k = 1; k <= 20; k++)
f1[i][j][k] = N, f2[i][j][k] = -N;
for (int i = 1; i <= n; i++)
cin >> x[i], a[i] = a[i - 1] + x[i];
for (int i = n + 1; i <= 2 * n ; i++)
a[i] = a[i - 1] + x[i - n];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
f1[i][j][1] = f2[i][j][1] = (a[j] - a[i - 1] + N) % 10;
for (int i = 1; i <= 2 * n; i++)
for (int j = i + 1; j <= 2 * n; j++)
for (int l = 2; l <= m; l++)
for (int k = i; k < j; k++)
f1[i][j][l] = min(f1[i][j][l], f1[i][k][l - 1] * f1[k + 1][j][1]), f2[i][j][l] = max(f2[i][j][l], f2[i][k][l - 1] * f2[k + 1][j][1]);
for (int i = 1; i <= n; i++)
maxn = max(maxn, f2[i][i + n - 1][m]), minn = min(minn, f1[i][i + n - 1][m]);
printf("%d\n%d", minn, maxn);
return 0;
}