isleap =: monad define divBy4 =. 0=4|y divBy100 =. 0=100|y divBy400 =. 0=400|y divBy4*.divBy400+.-.divBy100 ) daysInMonth =: dyad define feb =. (isleap x){28 29 y{31,feb, 31 30 31 30 31 31 30 31 30 31 ) nextMonthStart =: monad define ('year';'month';'day') =. y days =. year daysInMonth month day =. 7 | days + day if. month = 11 do. (year+1);0;day else. year;(month+1);day end. ) start =: nextMonthStart^:12 (1900;0;0) generateMonths =: 13 : '(nextMonthStart^:y) start' months =: generateMonths i. 1199 startedOnSunday =: 6 = [: > 2 { ] result =: +/startedOnSunday"1 months