Today   (2020-02-02,   at the time of this writing)   happens to be a palindrome,   without the hyphens,   not only for those countries which express their dates in the   yyyy-mm-dd   format but,   unusually,   also for countries which use the   dd-mm-yyyy   format.



Task
Write a program which calculates and shows the next 15 palindromic dates for those countries which express their dates in the   yyyy-mm-dd   format.




TYPE Date=[
  INT year
  BYTE month
  BYTE day]
 
BYTE FUNC IsLeapYear(INT y)
  IF y MOD 100=0 THEN
    IF y MOD 400=0 THEN
      RETURN (1)
    ELSE
      RETURN (0)
    FI
  FI
 
  IF y MOD 4=0 THEN
    RETURN (1)
  FI
RETURN (0)
 
BYTE FUNC GetMaxDay(INT y BYTE m)
  BYTE ARRAY MaxDay=[31 28 31 30 31 30 31 31 30 31 30 31]
 
  IF m=2 AND IsLeapYear(y)=1 THEN
    RETURN (29)
  FI
RETURN (MaxDay(m-1))
 
PROC NextDay(Date POINTER d)
  BYTE maxD
 
  d.day==+1
  maxD=GetMaxDay(d.year,d.month)
  IF d.day>maxD THEN
    d.day=1
    d.month==+1
    IF d.month>12 THEN
      d.month=1
      d.year==+1
    FI
  FI
RETURN
 
BYTE FUNC IsPalindrome(Date POINTER d)
  INT y
 
  y=d.year
  IF y/1000#d.day MOD 10 THEN
    RETURN (0)
  FI
  y==MOD 1000
  IF y/100#d.day/10 THEN
    RETURN (0)
  FI
  y==MOD 100
  IF y/10#d.month MOD 10 THEN
    RETURN (0)
  FI
  y==MOD 10
  IF y#d.month/10 THEN
    RETURN (0)
  FI
RETURN (1)
 
PROC PrintB2(BYTE x)
  IF x<10 THEN
    Put('0)
  FI
  PrintB(x)
RETURN
 
PROC PrintDateShort(Date POINTER d)
  PrintI(d.year) Put('-)
  PrintB2(d.month) Put('-)
  PrintB2(d.day)
RETURN
 
PROC Main()
  BYTE count
  Date d
 
  count=0
  d.year=2020 d.month=2 d.day=3
  WHILE count<15
  DO
    IF IsPalindrome(d) THEN
      PrintDateShort(d) PutE()
      count==+1
    FI
    NextDay(d)
  OD
RETURN