#include<bits/stdc++.h>
using namespace std;
long long n,dp[100010],b[100010],bj,ans=1e10,res,a[100010],tp[100010],tp1[100010];
void dfs(long long x){
if(x>n){
long long y=0;
for(long long i=1;i<=n;i++)
tp1[i]=tp[i];
sort(tp1+1,tp1+n+1);
for(long long i=1;i<=n;i++){
if(tp1[i]==y)
y++;
}
dp[y]++;
ans=min(ans,y);
return;
}
dfs(x+1);
tp[x]=b[x];
dfs(x+1);
tp[x]=a[x];
}
long long g(long long x){
long long y=1;
for(long long i=1;i<=x;i++)
y=y*2%(1000000007);
return y;
}
int main(){
freopen("Mex.in","r",stdin);
freopen("Mex.out","W",stdout);
cin>>n;
if(n>15){
cout<<g(n)<<endl;
return 0;
}
for(long long i=1;i<=n;i++){
cin>>a[i];
tp[i]=a[i];
}
for(long long i=1;i<=n;i++){
cin>>b[i];
}
dfs(1);
cout<<ans<<" "<<dp[ans];
return 0;
}