#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=5e3+10;
int n;
int a[N];
char x;
int c;
int s[N],t[N];
int cs,ct;
string st;
int y[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int ans;
bool r(int x)
{
if((x%400==0) || (x%4==0 && x%100!=0)){
return true;
}
else{
return false;
}
}
void solve()
{
cin>>n;
up(i,1,n,1){
cin>>a[i];
}
sort(a+1,a+n+1);
up(i,1,2,1){
cin>>st;
c=0;
up(j,0,(int)st.length()-1,1){
x=st[j];
if(x=='-' || x==':'){
if(i==1){
s[++cs]=c;
}
if(i==2){
t[++ct]=c;
}
c=0;
}
else{
c*=10;
c+=(x-'0');
}
}
if(i==1){
s[++cs]=c;
}
if(i==2){
t[++ct]=c;
}
}
c=0;
up(i,s[1],t[1]-1,1){
c+=365;
if(r(i)){
c++;
}
}
up(i,1,s[2],1){
c-=y[i];
if(r(s[1]) && i==2){
c--;
}
}
up(i,1,t[2],1){
c+=y[i];
if(r(t[1]) && i==2){
c++;
}
}
c-=s[3];
c+=t[3];
c*=24;
c-=s[4];
c+=t[4];
c*=60;
c-=s[5];
c+=t[5];
up(i,1,n,1){
if(c>=a[i]){
ans++;
c-=a[i];
}
else{
break;
}
}
cout<<ans<<endl;
return;
}
signed main()
{
int _=1;
up(i,1,_,1){
solve();
}
return 0;
}