#include<bits/stdc++.h>
using namespace std;
#define INF 9999999
int dp[10010];//dp[i]表示长度为i+1的子序列末尾元素最小值;
int a[10010];
int main()
{
int n;
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
{
cin>>a[i];
dp[i]=INF;
}
for(int i=0;i<n;i++)
{
///最长上升
*lower_bound(dp,dp+n,a[i])=a[i];//找到>=a[i]的第一个元素,并用a[i]替换;
*upper_bound(dp,dp+n,a[i])=a[i];
///最长不下降
}
cout<<lower_bound(dp,dp+n,INF)-dp<<endl;//找到第一个INF的地址减去首地址就是最大子序列的长度;
cout<<upper_bound(dp,dp+n,INF)-dp<<endl;
}
return 0;
}
//3 2 4 4 1
// 2 1 5 3 6 4 8 9 7
// 1 3 4 7 9
// 1 4
// 1 4 4