#include <iostream>
#include <algorithm>
#include <vector>
#define ll long long
using namespace std;
const int MX = 3e5+10;
ll MOD = 1000000007, INF = -1;
ll a[MX], len[2][MX], cnt[2][MX], sum[2][MX];
ll t[2][2][4*MX], idx[MX];
//a[0][i] ending on down stroke
//a[1][i] ending on up stroke
//T = 0 min
//T = 1 max
int ask(int T, int tp, int v, int tl, int tr, int l, int r) {
if (l > r)
return 0;
if (l == tl && r == tr)
return t[T][tp][v];
int tm = (tl + tr) / 2;
int L = ask(T, tp, v*2, tl, tm, l, min(r,tm)), R = ask(T, tp, v*2+1, tm+1, tr, max(l,tm+1), r);
if (len[tp][L] == len[tp][R]) {
if (T == 0) {
return min(L, R);
}
else return max(L, R);
}
else if (len[tp][L] > len[tp][R]) {
return L;
}
else {
return R;
}
}
void update(int T, int tp, int v, int tl, int tr, int pos) {
if (tl == tr)
t[T][tp][v] = idx[tl];
else {
int tm = (tl + tr) / 2;
if (pos <= tm)
update(T, tp, v*2, tl, tm, pos);
else
update(T, tp, v*2+1, tm+1, tr, pos);
int L = t[T][tp][v*2], R = t[T][tp][v*2+1];
if (len[tp][L] == len[tp][R]) {
if (T == 0) {
t[T][tp][v] = min(L, R);
}
else {
t[T][tp][v] = max(L, R);
}
}
else if (len[tp][L] > len[tp][R]) {
t[T][tp][v] = L;
}
else {
t[T][tp][v] = R;
}
}
}
int main() {
int n; cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
idx[a[i]] = i;
}
int mxlen = 0;
sum[0][0] = sum[1][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= 1; j++) {
int best_lo, best_hi, best;
if (j == 1) {
best_lo = ask(0, 0, 1, 1, n, 1, a[i]-1);
best_hi = ask(1, 0, 1, 1, n, 1, a[i]-1);
best = len[0][best_lo]+1;
}
else {
best_lo = ask(0, 1, 1, 1, n, a[i]+1, n);
best_hi = ask(1, 1, 1, 1, n, a[i]+1, n);
best = len[1][best_lo]+1;
}
len[j][i] = best;
update(0, j, 1, 1, n, a[i]);
update(1, j, 1, 1, n, a[i]);
mxlen = max(mxlen, best);
cnt[j][i] = (sum[1-j][best_hi]-sum[1-j][best_lo-1]+MOD)%MOD;
sum[j][i] = (sum[j][i-1]+cnt[j][i])%MOD;
}
}
ll ans = 0;
for (int i = 1; i <= n; i++) {
if (len[0][i] == mxlen) {
ans = (ans+cnt[0][i])%MOD;
}
if (len[1][i] == mxlen) {
ans = (ans+cnt[1][i])%MOD;
}
//cout << i << " " << len[0][i] << " " << len[1][i] << '\n';
}
cout << mxlen << " " << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojZGVmaW5lIGxsIGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTVggPSAzZTUrMTA7CmxsIE1PRCA9IDEwMDAwMDAwMDcsIElORiA9IC0xOwpsbCBhW01YXSwgbGVuWzJdW01YXSwgY250WzJdW01YXSwgc3VtWzJdW01YXTsKbGwgdFsyXVsyXVs0Kk1YXSwgaWR4W01YXTsKIAovL2FbMF1baV0gZW5kaW5nIG9uIGRvd24gc3Ryb2tlCi8vYVsxXVtpXSBlbmRpbmcgb24gdXAgc3Ryb2tlCi8vVCA9IDAgbWluCi8vVCA9IDEgbWF4CiAKaW50IGFzayhpbnQgVCwgaW50IHRwLCBpbnQgdiwgaW50IHRsLCBpbnQgdHIsIGludCBsLCBpbnQgcikgewoJaWYgKGwgPiByKQoJCXJldHVybiAwOwoJaWYgKGwgPT0gdGwgJiYgciA9PSB0cikKCQlyZXR1cm4gdFtUXVt0cF1bdl07CglpbnQgdG0gPSAodGwgKyB0cikgLyAyOwoJaW50IEwgPSBhc2soVCwgdHAsIHYqMiwgdGwsIHRtLCBsLCBtaW4ocix0bSkpLCBSID0gYXNrKFQsIHRwLCB2KjIrMSwgdG0rMSwgdHIsIG1heChsLHRtKzEpLCByKTsKCWlmIChsZW5bdHBdW0xdID09IGxlblt0cF1bUl0pIHsKCQlpZiAoVCA9PSAwKSB7CgkJCXJldHVybiBtaW4oTCwgUik7CgkJfQoJCWVsc2UgcmV0dXJuIG1heChMLCBSKTsKCX0KCWVsc2UgaWYgKGxlblt0cF1bTF0gPiBsZW5bdHBdW1JdKSB7CgkJcmV0dXJuIEw7Cgl9CgllbHNlIHsKCQlyZXR1cm4gUjsKCX0KfQogCnZvaWQgdXBkYXRlKGludCBULCBpbnQgdHAsIGludCB2LCBpbnQgdGwsIGludCB0ciwgaW50IHBvcykgewoJaWYgKHRsID09IHRyKQoJCXRbVF1bdHBdW3ZdID0gaWR4W3RsXTsKCWVsc2UgewoJCWludCB0bSA9ICh0bCArIHRyKSAvIDI7CgkJaWYgKHBvcyA8PSB0bSkKCQkJdXBkYXRlKFQsIHRwLCB2KjIsIHRsLCB0bSwgcG9zKTsKCQllbHNlCgkJCXVwZGF0ZShULCB0cCwgdioyKzEsIHRtKzEsIHRyLCBwb3MpOwoJCWludCBMID0gdFtUXVt0cF1bdioyXSwgUiA9IHRbVF1bdHBdW3YqMisxXTsKCQlpZiAobGVuW3RwXVtMXSA9PSBsZW5bdHBdW1JdKSB7CgkJCWlmIChUID09IDApIHsKCQkJCXRbVF1bdHBdW3ZdID0gbWluKEwsIFIpOwoJCQl9CgkJCWVsc2UgewoJCQkJdFtUXVt0cF1bdl0gPSBtYXgoTCwgUik7CgkJCX0KCQl9CgkJZWxzZSBpZiAobGVuW3RwXVtMXSA+IGxlblt0cF1bUl0pIHsKCQkJdFtUXVt0cF1bdl0gPSBMOwoJCX0KCQllbHNlIHsKCQkJdFtUXVt0cF1bdl0gPSBSOwoJCX0KCX0KfQogCmludCBtYWluKCkgewoJaW50IG47IGNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJY2luID4+IGFbaV07CgkJaWR4W2FbaV1dID0gaTsKCX0KCWludCBteGxlbiA9IDA7CglzdW1bMF1bMF0gPSBzdW1bMV1bMF0gPSAxOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPD0gMTsgaisrKSB7CgkJCWludCBiZXN0X2xvLCBiZXN0X2hpLCBiZXN0OwoJCQlpZiAoaiA9PSAxKSB7CgkJCQliZXN0X2xvID0gYXNrKDAsIDAsIDEsIDEsIG4sIDEsIGFbaV0tMSk7CgkJCQliZXN0X2hpID0gYXNrKDEsIDAsIDEsIDEsIG4sIDEsIGFbaV0tMSk7CgkJCQliZXN0ID0gbGVuWzBdW2Jlc3RfbG9dKzE7CgkJCX0KCQkJZWxzZSB7CgkJCQliZXN0X2xvID0gYXNrKDAsIDEsIDEsIDEsIG4sIGFbaV0rMSwgbik7CgkJCQliZXN0X2hpID0gYXNrKDEsIDEsIDEsIDEsIG4sIGFbaV0rMSwgbik7CgkJCQliZXN0ID0gbGVuWzFdW2Jlc3RfbG9dKzE7CgkJCX0KCQkJbGVuW2pdW2ldID0gYmVzdDsKCQkJdXBkYXRlKDAsIGosIDEsIDEsIG4sIGFbaV0pOwoJCQl1cGRhdGUoMSwgaiwgMSwgMSwgbiwgYVtpXSk7CgkJCW14bGVuID0gbWF4KG14bGVuLCBiZXN0KTsKCQkJY250W2pdW2ldID0gKHN1bVsxLWpdW2Jlc3RfaGldLXN1bVsxLWpdW2Jlc3RfbG8tMV0rTU9EKSVNT0Q7CgkJCXN1bVtqXVtpXSA9IChzdW1bal1baS0xXStjbnRbal1baV0pJU1PRDsKCQl9Cgl9CglsbCBhbnMgPSAwOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaWYgKGxlblswXVtpXSA9PSBteGxlbikgewoJCQlhbnMgPSAoYW5zK2NudFswXVtpXSklTU9EOwoJCX0KCQlpZiAobGVuWzFdW2ldID09IG14bGVuKSB7CgkJCWFucyA9IChhbnMrY250WzFdW2ldKSVNT0Q7CgkJfQoJCS8vY291dCA8PCBpIDw8ICIgIiA8PCBsZW5bMF1baV0gPDwgIiAiIDw8IGxlblsxXVtpXSA8PCAnXG4nOwoJfQoJY291dCA8PCBteGxlbiA8PCAiICIgPDwgYW5zIDw8ICdcbic7CglyZXR1cm4gMDsKfSA=