#include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for (int i=(a),_b=(b);i<=_b;i=i+1)
#define FORD(i,b,a) for (int i=(b),_a=(a);i>=_a;i=i-1)
#define REP(i,n) for (int i=0,_n=(n);i<_n;i=i+1)
#define FORE(i,v) for (__typeof((v).begin()) i=(v).begin();i!=(v).end();i++)
#define ALL(v) (v).begin(),(v).end()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define double db
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
const int MAXN = 200;
const int oo = (1 << 6) - 1;
int n, x, ans1, f[MAXN][oo+3], a[5][MAXN], z[MAXN];
ll ans2, t[MAXN][oo+3];
bool getbit(int state, int i) {
return (state >> (6-i) ) & 1;
}
int tinh(int state) {
int res = 0;
FOR(i,1,6)
if (getbit(state,i)) res++;
return res;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("test.inp", "r", stdin);
freopen("test.out", "w", stdout);
#endif
cin >> n;
FOR(i,1,n) {
cin >> x;
if (x) a[x][i] = 1;
}
FOR(i,1,3) {
z[1] = z[1] * 2 + a[i][1];
}
FOR(i,2,n) {
FOR(j,1,3) z[i] = z[i] * 2 + a[j][i-1];
FOR(j,1,3) z[i] = z[i] * 2 + a[j][i];
}
f[0][0] = 0; t[0][0] = 1;
FOR(j,0,(1<<3)-1)
if ((z[1]&j)==0) {
f[1][j] = tinh(j);
t[1][j] = 1;
}
FOR(i,2,n) {
FOR(state,0,oo)
if ((z[i]&state)==0)
FOR(j,0,oo)
if ((z[i-2]&j)==0)
if (t[i-2][j]>0)
if ((i>3||(i==2&j==0))||(i==3&j<(1<<3)))
{
// check ma
bool ok = 1;
if (getbit(state,1)) {
if (getbit(state,6)) ok = 0;
if (getbit(j,6)) ok = 0;
if (getbit(j,2)) ok = 0;
}
if (getbit(state,2)) {
if (getbit(j,1)) ok = 0;
if (getbit(j,3)) ok = 0;
}
if (getbit(state,3)) {
if (getbit(state,4)) ok = 0;
if (getbit(j,2)) ok = 0;
if (getbit(j,4)) ok = 0;
}
if (getbit(state,4)) {
if (getbit(state,3)) ok = 0;
if (getbit(j,5)) ok = 0;
}
if (getbit(state,5)) {
if (getbit(j,4)) ok = 0;
if (getbit(j,6)) ok = 0;
}
if (getbit(state,6)) {
if (getbit(j,5)) ok = 0;
if (getbit(state,1)) ok = 0;
}
// qhd
if (ok)
if (f[i][state]<f[i-2][j]+tinh(state)) {
f[i][state] = f[i-2][j] + tinh(state);
t[i][state] = t[i-2][j];
}
else
if (f[i][state]==f[i-2][j]+tinh(state)) {
t[i][state] += t[i-2][j];
}
}
}
FOR(state,0,oo) ans1 = max(ans1,f[n][state]);
FOR(state,0,oo)
if (f[n][state]==ans1) ans2 += t[n][state];
cout << ans1 << " " << ans2;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRk9SKGksYSxiKSBmb3IgKGludCBpPShhKSxfYj0oYik7aTw9X2I7aT1pKzEpCiNkZWZpbmUgRk9SRChpLGIsYSkgZm9yIChpbnQgaT0oYiksX2E9KGEpO2k+PV9hO2k9aS0xKQojZGVmaW5lIFJFUChpLG4pIGZvciAoaW50IGk9MCxfbj0obik7aTxfbjtpPWkrMSkKI2RlZmluZSBGT1JFKGksdikgZm9yIChfX3R5cGVvZigodikuYmVnaW4oKSkgaT0odikuYmVnaW4oKTtpIT0odikuZW5kKCk7aSsrKQojZGVmaW5lIEFMTCh2KSAodikuYmVnaW4oKSwodikuZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIFNaKHgpICgoaW50KSh4KS5zaXplKCkpCiNkZWZpbmUgZG91YmxlIGRiCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gUElJOwpjb25zdCBsbCBtb2Q9MTAwMDAwMDAwNzsKbGwgcG93bW9kKGxsIGEsbGwgYikge2xsIHJlcz0xO2ElPW1vZDsgYXNzZXJ0KGI+PTApOyBmb3IoO2I7Yj4+PTEpe2lmKGImMSlyZXM9cmVzKmElbW9kO2E9YSphJW1vZDt9cmV0dXJuIHJlczt9CmNvbnN0IGludCBNQVhOID0gMjAwOwpjb25zdCBpbnQgb28gPSAoMSA8PCA2KSAtIDE7CgppbnQgbiwgeCwgYW5zMSwgZltNQVhOXVtvbyszXSwgYVs1XVtNQVhOXSwgeltNQVhOXTsKbGwgYW5zMiwgdFtNQVhOXVtvbyszXTsKCmJvb2wgZ2V0Yml0KGludCBzdGF0ZSwgaW50IGkpIHsKICAgIHJldHVybiAoc3RhdGUgPj4gKDYtaSkgKSAmIDE7Cn0KCmludCB0aW5oKGludCBzdGF0ZSkgewogICAgaW50IHJlcyA9IDA7CiAgICBGT1IoaSwxLDYpCiAgICBpZiAoZ2V0Yml0KHN0YXRlLGkpKSByZXMrKzsKICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKCkgewogICAgCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiAgICAJI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIAlmcmVvcGVuKCJ0ZXN0LmlucCIsICJyIiwgc3RkaW4pOwogICAgCWZyZW9wZW4oInRlc3Qub3V0IiwgInciLCBzdGRvdXQpOwogICAgCSNlbmRpZgogICAgY2luID4+IG47CiAgICBGT1IoaSwxLG4pIHsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBpZiAoeCkgYVt4XVtpXSA9IDE7CiAgICB9CiAgICBGT1IoaSwxLDMpIHsKICAgICAgICB6WzFdID0gelsxXSAqIDIgKyBhW2ldWzFdOwogICAgfQogICAgRk9SKGksMixuKSB7CiAgICAgICAgRk9SKGosMSwzKSB6W2ldID0geltpXSAqIDIgKyBhW2pdW2ktMV07CiAgICAgICAgRk9SKGosMSwzKSB6W2ldID0geltpXSAqIDIgKyBhW2pdW2ldOwogICAgfQogICAgZlswXVswXSA9IDA7IHRbMF1bMF0gPSAxOwogICAgRk9SKGosMCwoMTw8MyktMSkKICAgIGlmICgoelsxXSZqKT09MCkgewogICAgICAgIGZbMV1bal0gPSB0aW5oKGopOwogICAgICAgIHRbMV1bal0gPSAxOwogICAgfQogICAgRk9SKGksMixuKSB7CiAgICAgICAgRk9SKHN0YXRlLDAsb28pCiAgICAgICAgaWYgKCh6W2ldJnN0YXRlKT09MCkKICAgICAgICBGT1IoaiwwLG9vKQogICAgICAgIGlmICgoeltpLTJdJmopPT0wKQogICAgICAgIGlmICh0W2ktMl1bal0+MCkKICAgICAgICBpZiAoKGk+M3x8KGk9PTImaj09MCkpfHwoaT09MyZqPCgxPDwzKSkpCiAgICAgICAgewogICAgICAgICAgICAvLyBjaGVjayBtYQogICAgICAgICAgICBib29sIG9rID0gMTsKICAgICAgICAgICAgaWYgKGdldGJpdChzdGF0ZSwxKSkgewogICAgICAgICAgICAgICAgaWYgKGdldGJpdChzdGF0ZSw2KSkgb2sgPSAwOwogICAgICAgICAgICAgICAgaWYgKGdldGJpdChqLDYpKSBvayA9IDA7CiAgICAgICAgICAgICAgICBpZiAoZ2V0Yml0KGosMikpIG9rID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZ2V0Yml0KHN0YXRlLDIpKSB7CiAgICAgICAgICAgICAgICBpZiAoZ2V0Yml0KGosMSkpIG9rID0gMDsKICAgICAgICAgICAgICAgIGlmIChnZXRiaXQoaiwzKSkgb2sgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChnZXRiaXQoc3RhdGUsMykpIHsKICAgICAgICAgICAgICAgIGlmIChnZXRiaXQoc3RhdGUsNCkpIG9rID0gMDsKICAgICAgICAgICAgICAgIGlmIChnZXRiaXQoaiwyKSkgb2sgPSAwOwogICAgICAgICAgICAgICAgaWYgKGdldGJpdChqLDQpKSBvayA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGdldGJpdChzdGF0ZSw0KSkgewogICAgICAgICAgICAgICAgaWYgKGdldGJpdChzdGF0ZSwzKSkgb2sgPSAwOwogICAgICAgICAgICAgICAgaWYgKGdldGJpdChqLDUpKSBvayA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGdldGJpdChzdGF0ZSw1KSkgewogICAgICAgICAgICAgICAgaWYgKGdldGJpdChqLDQpKSBvayA9IDA7CiAgICAgICAgICAgICAgICBpZiAoZ2V0Yml0KGosNikpIG9rID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZ2V0Yml0KHN0YXRlLDYpKSB7CiAgICAgICAgICAgICAgICBpZiAoZ2V0Yml0KGosNSkpIG9rID0gMDsKICAgICAgICAgICAgICAgIGlmIChnZXRiaXQoc3RhdGUsMSkpIG9rID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBxaGQKICAgICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICBpZiAoZltpXVtzdGF0ZV08ZltpLTJdW2pdK3Rpbmgoc3RhdGUpKSB7CiAgICAgICAgICAgICAgICBmW2ldW3N0YXRlXSA9IGZbaS0yXVtqXSArIHRpbmgoc3RhdGUpOwogICAgICAgICAgICAgICAgdFtpXVtzdGF0ZV0gPSB0W2ktMl1bal07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgKGZbaV1bc3RhdGVdPT1mW2ktMl1bal0rdGluaChzdGF0ZSkpIHsKICAgICAgICAgICAgICAgIHRbaV1bc3RhdGVdICs9IHRbaS0yXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIEZPUihzdGF0ZSwwLG9vKSBhbnMxID0gbWF4KGFuczEsZltuXVtzdGF0ZV0pOwogICAgRk9SKHN0YXRlLDAsb28pCiAgICBpZiAoZltuXVtzdGF0ZV09PWFuczEpIGFuczIgKz0gdFtuXVtzdGF0ZV07CiAgICBjb3V0IDw8IGFuczEgPDwgIiAiIDw8IGFuczI7CglyZXR1cm4gMDsKfQo=