#include #include #include #include using namespace std; enum { FL_T=0, FL_W=8, FL_A=9 }; enum {XXX=5}; typedef pair ii; typedef vector vii; bool flags[10]; int y; bool leap(int y) { if(y%400 == 0) return true; if(y%100 == 0) return false; if(y%4 == 0) return true; return false; } int conv(int d, int m) { static const int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int r = d-1; for(int i=1; i2 && leap(y)) r++; return r; } int days(int y) { int r=0; for(int i=0; i11)) p--; p = 31+28+leap(y)+p + 1; int w = XXX + days(y) + p; w %= 7; return p + 6-w; } bool iswork(int d, int w) { bool r = false; if((w+d)%7 < 5) r = true; if(d==0 || d==paschal(y) || d==conv(1,5) || d==conv(8,5) || d==conv(5,7) || d==conv(6,7) || d==conv(28,9) || d==conv(28,10) || d==conv(17,11) || d==conv(24,12) || d==conv(25,12) || d==conv(26, 12)) r = false; return r; } bool isholy(int d, int w) { bool r = false; if((w+d)%7 == 6) r = true; if(d==0 || d==paschal(y) || d==conv(1,5) || d==conv(8,5) || d==conv(5,7) || d==conv(6,7) || d==conv(28,9) || d==conv(28,10) || d==conv(17,11) || d==conv(24,12) || d==conv(25,12) || d==conv(26, 12)) r = true; return r; } bool is_a(int d, int w) { if(not iswork(d,w)) return false; for(;;) { --d; if(iswork(d,w)) return false; if(isholy(d,w)) return true; } } int main() { string s; char t[10000]; while(cin >> s >> t >> y) { flags[FL_T] = strchr(s.c_str(), 't') != NULL; flags[FL_W] = strchr(s.c_str(), 'w') != NULL; flags[FL_A] = strchr(s.c_str(), 'a') != NULL; for(int i=1; i<=7; ++i) flags[i] = strchr(s.c_str(), '0'+i) != NULL; cin >> s >> t >> y; v.clear(); char *tt=t-1; while(tt) { ++tt; char *e=strchr(tt, ','); if(e) *e=0; process(tt); tt=e; } int count = 0; for(unsigned i=0; i