#include <bits/stdc++.h>
using namespace std;
#define hh putchar('\n')
#define kg putchar(' ')
#define debug puts("debug")
#define int long long
namespace quickread{
template<typename T> void read(T &x){
x=0;char c=getchar();T neg=0;
while(!isdigit(c)) neg|=!(c^'-'),c=getchar();
while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
if(neg) x=(~x)+1;
}
template<typename T> void write(T x){
if(x<0) putchar('-'),x=~x+1;
if(x>9) write(x/10);
putchar(x%10^48);
}
}
using namespace quickread;
const int N=110,inf=2147483647;
int n,m,a[N],dp1[N][N][N],dp2[N][N][N],ans1=inf,ans2;
int mod(int x){return (x%10+10)%10;}
signed main(){
read(n),read(m);
for(int i=1;i<=n;++i) read(a[i]),a[i+n]=i;
for(int i=1;i<=n*2;++i) a[i]+=a[i-1];
for(int l=1;l<=n*2;++l)
for(int r=l;r<=n*2;++r)
dp1[1][l][r]=dp2[1][l][r]=mod(a[r]-a[l-1]);
for(int len=2;len<=m;++len)
for(int l=1;l<=2*n;++l)
for(int r=l+len-1;r<=2*n;++r)
dp1[len][l][r]=inf,dp2[len][l][r]=-inf;
for(int len=2;len<=m;++len)
for(int l=1;l<=2*n;++l)
for(int r=l+len-1;r<=2*n;++r)
for(int k=l+len-2;k<r;++k)
dp1[len][l][r]=min(dp1[len][l][r],mod(a[r]-a[k])*dp1[len-1][l][k]),
dp2[len][l][r]=max(dp2[len][l][r],mod(a[r]-a[k])*dp2[len-1][l][k]);
for(int l=1;l<=n;++l) ans1=min(ans1,dp1[m][l][l+n-1]),ans2=max(ans2,dp2[m][l][l+n-1]);
write(ans1),hh,write(ans2);
return 0;
}