C++ code :
#include <bits/stdc++.h>
using namespace std;
long long mod=1e9+7;
void solve(int*arr,int n,vector<int>&v,vector<vector<int>>&res,int i){
if(i>=n){
res.push_back(v);
return;
}
v.push_back(arr[i]);
solve(arr,n,v,res,i+1);
v.pop_back();
solve(arr,n,v,res,i+1);
}
int main() {
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++){
cin>>arr[i];
}
vector<vector<int>>res;
vector<int>v;
solve(arr,n,v,res,0);
long long ans=0;
for(int i=0;i<res.size();i++){
unordered_map<int,int>mp;
for(int j=0;j<res[i].size();j++){
mp[res[i][j]]++;
}
long long temp=0;
for(int j=0;j<res[i].size();j++){
if(mp.find(j+1)==mp.end()){
temp=j+1;
break;
}
}
if(temp==0) ans=(ans+1+res[i].size())%mod;
else ans=(ans+temp)%mod;
}
cout<<ans%mod<<endl;;
}