-- Celestial algorithms and data derived from https://ytliu0.github.io/ChineseCalendar/sunMoon.html

local moon_data = {{0,4,6,6,6,5,4,3,4,5,3,7,3,6,3,3,4,3,5,6,5,5,5,1,4,2}, {1,5,6,6,6,5,3,4,2,4,5,3,7,5,5,6,4,5,5,4,6,3,5,4,3,5}, {0,4,4,5,5,4,6,2,6,3,5,6,5,6,7,6,6,6,3,6,1,4,3,4,5}, {0,5,5,3,3,2,5,3,8,5,8,6,6,6,5,6,7,7,6,6,2,4,1,4,5,4}, {1,5,4,3,3,2,1,5,3,6,6,6,6,5,4,6,4,6,5,5,5,4,5,5,5,5}, {0,6,3,6,3,4,4,4,4,4,4,4,5,4,5,2,5,1,5,4,6,7,7,7,7,6}, {1,3,7,2,8,4,6,5,5,4,4,3,4,5,3,6,2,4,2,4,5,6,7,7,6}, {1,4,5,3,6,5,8,7,6,5,4,3,4,3,4,5,4,4,3,3,4,5,4,6,3,7}, {0,4,6,7,6,6,7,5,6,6,3,7,1,5,2,4,3,4,5,5,5,5,4,2,5,1}, {1,7,5,7,7,6,4,4,4,3,6,3,7,2,5,4,4,6,5,6,7,6,4,4,1}, {1,5,3,6,6,6,5,4,2,3,3,4,7,4,6,6,5,6,5,4,6,4,6,3,4,4}, {0,4,4,5,4,5,5,3,7,4,7,6,6,7,7,7,8,6,5,6,1,5,1,5,4,4}, {1,5,4,3,3,2,1,6,2,7,5,7,5,5,6,6,6,7,7,5,6,1,4,3,5,6}, {0,5,4,4,1,2,2,1,5,4,6,5,4,4,5,4,7,4,6,6,5,5,5,4,5}, {0,5,4,6,2,6,2,4,3,3,4,4,4,4,5,3,6,2,5,3,6,6,6,6,7,5}, {1,4,5,2,6,3,7,6,6,4,3,3,3,4,3,5,1,4,1,4,4,5,6,7,6,6}, {0,5,4,6,4,7,7,7,7,5,3,4,1,3,3,3,4,2,3,3,3,4,5,4,7,3}, {1,6,5,5,6,6,5,6,5,4,5,2,6,2,4,3,3,5,5,6,6,6,3,6,1}, {1,7,4,7,7,6,6,5,3,3,5,3,7,2,6,2,4,4,4,5,6,5,5,4,2,5}, {0,2,6,7,7,7,6,4,5,3,4,6,5,7,5,6,5,4,5,5,3,5,2,4,3,3}, {1,4,5,4,6,5,4,6,3,7,4,6,5,5,7,7,7,6,6,3,6,0,4,3,5,5}, {0,5,4,4,2,2,4,3,8,4,7,6,6,6,6,6,8,7,7,6,3,5,1,4,5}, {0,5,5,4,3,3,2,2,5,4,7,6,7,6,6,5,7,5,7,6,6,6,4,5,5,4}, {1,5,4,3,5,1,5,4,5,5,4,5,6,6,5,6,2,6,2,6,4,6,6,6,6,5}, {0,5,3,6,2,7,5,7,5,5,4,4,4,4,5,3,5,1,3,1,3,5,5,6,7,5}, {1,5,5,3,7,5,7,6,5,5,4,2,4,3,4,4,4,5,4,5,5,4,4,6,3}, {1,7,4,5,5,5,5,5,5,5,5,3,6,2,5,2,4,4,5,6,6,6,5,6,2,6}, {0,2,7,6,8,6,6,4,4,4,4,6,3,7,3,4,4,3,5,5,6,7,5,3,5,1}, {1,5,4,7,7,6,5,5,3,4,3,4,6,4,6,5,4,5,5,4,6,3,6,4,4}, {1,5,4,5,5,4,4,5,3,6,2,5,4,5,6,6,6,7,6,5,5,1,5,2,5,4}, {0,5,5,4,3,3,2,2,6,3,8,5,6,5,5,6,7,7,8,7,5,5,1,4,3,5}, {1,6,5,4,4,2,2,3,3,6,5,6,6,5,5,6,4,6,4,7,5,5,6,4,5,6}, {0,6,5,6,3,7,3,5,5,5,5,5,4,5,5,2,6,1,5,2,5,5,6,7,6}, {0,5,4,6,2,7,4,9,6,6,5,4,3,4,4,4,6,3,4,2,4,3,5,6,6,5}, {1,5,3,3,5,3,7,7,7,7,5,4,5,2,4,3,4,5,4,5,5,4,4,5,3,6}, {0,3,6,5,6,6,6,6,7,6,6,7,3,6,2,5,3,3,5,6,5,6,5,2,5,1}, {1,6,4,8,6,6,6,4,3,4,5,4,8,3,6,3,3,4,4,6,7,6,5,4,2}, {1,5,2,6,6,6,6,5,3,4,2,4,5,4,7,5,5,5,4,5,5,3,6,3,4,4}, {0,3,5,4,4,5,4,4,6,3,6,4,5,6,6,7,8,8,7,6,4,6,1,5,3,5}, {1,5,4,4,3,2,2,4,3,7,4,7,5,5,6,6,6,8,8,7,7,3,5,2,5,6}, {0,5,6,4,2,3,2,2,5,4,6,5,5,6,4,4,6,4,7,5,6,6,5,6,6}, {0,6,5,6,3,6,2,5,3,4,4,4,5,5,5,4,6,2,6,2,6,5,6,8,7,6}, {1,6,5,4,7,3,8,5,7,5,5,4,4,4,5,5,3,5,1,4,2,4,5,6,6,7}, {0,5,5,6,4,7,6,8,8,7,6,5,3,5,3,5,4,3,4,3,4,4,4,4,6,4}, {1,7,4,7,6,6,7,7,6,6,5,4,6,2,5,2,4,4,4,6,6,6,5,5,2}, {1,6,3,7,7,7,7,6,5,5,4,4,7,3,6,2,4,3,4,5,6,6,7,4,3,4}, {0,2,5,5,6,7,6,5,5,3,5,4,5,7,6,6,6,5,5,5,4,6,2,5,3,4}, {1,4,4,5,5,4,4,5,3,7,3,7,5,6,7,6,7,8,6,5,6,1,6,2,5}, {1,5,5,5,4,3,2,2,1,6,3,7,5,6,5,5,6,7,6,7,7,5,5,1,5,4}, {0,5,6,5,4,3,1,2,2,3,6,4,6,6,5,5,5,4,7,5,7,6,6,6,5,6}, {1,6,5,4,5,2,6,2,4,4,4,5,5,5,5,5,4,7,2,5,3,6,6,6,7,6}, {0,6,4,5,3,8,5,9,6,6,6,4,4,5,5,5,6,2,4,2,4,4,5,7,7}, {0,5,6,4,4,6,4,8,7,8,7,5,4,5,2,5,3,5,4,3,4,4,5,5,6,5}, {1,7,4,6,5,6,6,5,6,6,6,5,6,3,5,1,4,3,4,5,5,6,6,5,3,6}, {0,3,8,5,8,7,7,6,6,4,5,6,4,8,3,6,3,4,5,4,6,6,6,5,5,3}, {1,5,3,7,7,7,7,6,4,5,3,5,5,5,7,5,6,5,4,5,5,3,6,3,5}, {1,5,4,6,5,5,6,5,4,7,3,7,4,6,6,5,7,7,7,7,6,3,5,0,5,4}, {0,5,6,5,4,3,3,2,4,3,7,4,7,5,6,7,6,7,9,9,7,7,3,5,3,5}, {1,6,5,5,4,1,3,1,2,5,4,6,6,5,6,6,5,7,4,8,6,6,6,5,6,6}, {0,5,6,5,4,6,2,5,4,5,6,5,5,6,6,5,6,3,5,2,5,4,6,7,6}, {0,6,6,4,3,6,3,8,6,8,6,4,4,4,4,5,6,4,6,1,4,2,4,6,6,6}, {1,6,5,4,4,3,7,5,7,7,6,5,4,3,4,3,5,5,4,5,4,4,5,4,4,6}, {0,3,7,4,6,6,5,7,6,5,6,6,4,7,2,5,2,4,4,5,6,7,6,5,4,2}, {1,6,3,7,6,8,6,6,5,5,5,5,6,4,7,2,4,4,3,6,6,6,6,5,4}, {1,5,3,7,6,8,8,7,5,5,3,5,3,4,6,4,6,5,5,5,5,4,6,3,5,4}, {0,5,5,5,5,6,4,5,5,3,7,2,6,4,6,7,7,7,8,7,6,6,2,7,2,6}, {1,6,6,6,4,3,2,3,2,6,3,8,5,6,6,5,7,8,7,9,7,5,6,2,5,6}, {0,7,8,6,5,5,2,4,4,3,7,6,6,6,5,5,6,5,7,4,7,5,5,6,5}, {0,6,7,5,5,7,4,7,3,6,5,5,6,5,5,6,6,4,6,1,5,3,6,6,7,7}, {1,6,5,4,6,3,8,5,8,6,7,5,5,4,5,5,5,6,3,5,1,4,4,5,7,6}, {0,5,5,3,4,6,5,8,7,8,7,6,6,5,4,5,5,6,5,4,5,4,4,4,5}, {0,4,6,3,6,4,5,6,6,6,7,7,6,7,3,6,2,5,3,4,5,5,6,6,5,4}, {1,6,3,7,5,8,7,7,6,6,4,5,6,4,7,2,6,1,4,4,5,6,6,5,5,4}, {0,3,5,3,7,6,7,7,5,4,4,3,5,6,5,7,6,6,6,5,6,6,4,7,3,5}, {1,4,4,5,5,4,5,4,3,5,2,6,3,6,6,7,7,8,7,8,7,4,7,2,7}, {1,4,7,7,6,4,4,2,2,4,3,7,4,6,5,5,5,6,7,9,8,7,7,3,6,4}, {0,6,7,6,7,5,2,3,1,2,4,4,6,5,5,5,5,4,6,5,7,5,6,7,6,7}, {1,6,6,6,6,4,6,3,6,3,5,5,5,5,6,5,4,5,2,5,2,6,5,7,8,7}, {0,7,5,5,4,6,4,9,6,8,7,5,6,5,5,6,5,5,6,2,3,2,4,6,6}, {0,7,6,4,5,5,4,8,7,9,8,7,7,5,4,5,3,5,4,4,4,3,4,5,4,5}, {1,6,4,7,5,7,7,7,8,7,6,6,6,5,6,1,5,2,4,4,5,5,6,5,4,4}, {0,2,6,3,8,6,8,8,7,6,6,5,5,7,4,7,3,4,4,4,6,6,6,6,4,3}, {1,4,2,6,5,7,8,6,6,5,4,6,5,6,7,6,7,6,6,5,5,4,6,3,6}, {1,3,5,5,4,5,5,5,5,5,4,7,3,7,5,7,7,8,8,8,7,5,6,2,7,2}, {0,7,6,6,5,5,2,3,2,2,6,3,7,4,5,6,5,7,8,8,9,8,5,7,3,7}, {1,6,7,7,5,3,3,1,2,3,3,6,4,5,5,5,5,6,5,7,5,7,5,6,7,6}, {0,6,6,6,5,6,3,6,3,6,5,5,6,6,6,7,6,4,7,2,6,3,6,7,7}, {0,7,6,4,4,5,3,8,5,9,6,6,5,5,5,5,6,6,6,3,5,2,5,5,5,7}, {1,7,5,5,4,4,6,4,9,7,8,7,6,4,4,2,5,3,4,5,4,5,4,5,6,6}, {0,4,7,4,7,5,7,6,6,6,7,6,6,6,3,6,1,5,3,5,6,6,6,6,5}, {0,4,5,3,8,5,9,8,7,6,6,5,6,6,5,7,3,6,2,4,5,4,6,6,5,5}, {1,4,4,6,5,8,9,8,8,7,5,6,4,6,6,6,7,5,5,6,5,4,5,3,6,3}, {0,6,5,5,6,6,5,6,5,5,7,3,7,3,6,6,6,8,8,8,7,7,3,6,2,6}, {1,4,7,6,5,4,4,2,2,5,3,7,3,6,5,5,6,7,7,9,7,7,6,4,6}, {1,4,6,6,6,6,4,2,3,2,3,5,4,6,5,5,7,6,5,6,4,7,5,6,6,6}, {0,6,6,5,6,5,3,6,2,6,4,5,5,5,6,6,6,5,6,3,5,1,6,5,7,7}, {1,7,6,6,4,4,7,3,8,5,7,5,5,5,4,5,6,6,4,5,1,4,2,5,6,6}, {0,7,6,4,4,4,3,7,6,8,7,6,6,5,4,6,3,6,5,5,6,4,5,5,5}, {0,5,6,4,6,4,7,6,6,7,7,7,7,6,5,7,2,5,3,5,5,6,7,7,5,5}, {1,4,3,6,5,9,7,9,8,6,5,6,5,6,7,4,6,3,5,3,4,6,5,6,6,4}, {0,4,4,3,6,6,8,8,6,5,5,3,5,4,5,7,6,6,6,6,7,5,5,6,4,6}, {1,5,5,6,5,5,6,4,5,5,3,6,3,6,4,6,7,7,7,9,7,6,6,2,7}, {1,3,7,7,7,7,5,3,3,3,3,7,4,7,4,6,5,6,7,8,7,8,7,5,7,3}, {0,7,6,7,7,6,5,4,2,4,4,4,6,5,6,6,4,5,6,5,7,4,7,5,6,7}, {1,7,6,8,6,5,7,3,7,3,6,5,5,5,5,5,6,5,4,5,1,6,3,6,6}, {1,6,7,6,5,4,5,3,7,5,9,6,6,7,5,6,7,6,7,6,4,5,2,4,4,6}, {0,7,6,4,4,3,4,5,5,8,7,8,7,6,5,5,4,6,4,6,5,5,5,5,5,6}, {1,6,5,6,3,7,5,7,7,6,7,7,7,7,7,4,6,2,5,3,5,6,6,6,5,4}, {0,3,6,3,8,6,9,7,7,6,6,5,6,7,5,7,4,5,3,4,5,5,7,6,5}, {0,5,4,3,6,4,7,7,7,7,6,3,5,3,6,5,6,7,5,6,7,5,5,6,4,6}, {1,3,6,4,5,6,5,5,6,5,5,6,3,7,3,6,6,6,7,8,8,8,6,3,6,2}, {0,7,5,6,6,6,4,3,2,3,4,3,7,3,6,4,5,6,6,8,8,7,7,6,4,7}, {1,5,7,8,7,7,5,3,4,2,4,4,4,6,5,4,5,4,5,6,4,7,5,6,7}, {1,6,7,7,6,7,6,4,6,2,6,4,5,5,5,6,7,6,6,6,2,6,2,6,6,7}, {0,8,7,6,5,5,4,6,3,8,6,8,6,6,6,6,6,7,6,5,5,2,4,3,5,7}, {1,6,7,7,5,6,5,5,8,6,9,8,7,6,5,4,6,3,5,4,4,5,4,4,5,4}, {0,6,6,4,7,4,7,7,7,8,8,7,7,7,6,7,3,6,2,5,5,6,6,6,5}, {0,4,4,3,6,4,8,7,8,7,6,5,6,6,6,7,4,7,3,5,4,5,7,6,6,5}, {1,3,3,4,2,6,6,8,8,7,7,6,5,6,6,7,7,6,7,6,6,6,5,4,6,2}, {0,6,4,5,5,5,5,5,5,5,6,4,7,3,7,4,6,7,8,7,8,7,6,6,2}, {0,7,3,8,7,6,6,4,3,3,3,3,5,3,6,3,5,5,5,7,7,8,8,7,5,6}, {1,4,7,7,7,7,5,3,4,1,3,3,4,6,5,6,6,5,6,6,5,8,4,8,6,6}, {0,7,6,6,6,5,4,6,3,7,3,6,4,4,5,6,6,6,6,5,6,2,7,4,7,7}, {1,7,8,6,5,4,5,4,8,5,8,6,6,6,4,5,6,6,6,6,4,5,3,5,6}, {1,6,7,7,5,5,3,4,6,4,8,7,7,7,5,4,4,3,5,4,5,6,5,6,6,5}, {0,6,6,5,7,3,7,5,6,7,6,6,7,6,6,6,3,5,1,4,3,5,6,6,6,5}, {1,5,3,6,3,8,6,9,9,8,8,6,6,6,7,6,7,3,5,3,4,4,5,6,5,4}, {0,5,3,3,5,5,8,8,8,8,6,5,6,4,6,6,6,6,6,5,6,5,5,5,4}, {0,6,3,6,5,5,5,6,5,6,5,5,6,3,6,3,5,5,6,7,8,8,7,6,4,6}, {1,2,7,5,7,6,5,4,4,2,3,5,3,7,4,6,4,5,7,7,8,9,7,6,6,4}, {0,6,5,7,7,6,6,5,2,3,2,4,6,5,6,5,6,6,5,5,7,5,8,5,6,6}, {1,6,7,7,6,6,6,4,7,3,6,4,6,6,5,6,6,6,6,5,3,5,2,6,5}, {1,7,8,7,5,5,4,3,6,3,8,4,6,6,5,6,5,6,7,6,6,5,3,5,4,6}, {0,7,6,7,5,3,3,4,4,6,5,8,7,6,6,5,5,5,3,6,5,6,6,5,5,5}, {1,4,6,6,4,7,4,7,6,7,7,7,7,7,6,6,6,3,6,2,5,5,6,7,6,4}, {0,4,4,2,6,3,9,7,8,7,7,6,6,5,6,7,5,6,3,4,4,4,7,6,6}, {0,5,4,4,4,4,7,6,8,8,6,6,5,3,5,4,5,5,5,6,5,5,6,5,5,6}, {1,4,6,4,5,5,5,6,6,4,5,5,3,6,2,7,4,6,7,7,8,8,7,6,6,3}, {0,7,4,8,7,7,6,4,3,4,3,4,5,3,7,3,5,5,5,6,7,7,8,6,5}, {0,7,4,8,7,8,9,6,5,4,2,4,4,4,5,4,5,5,4,6,5,4,6,3,6,5}, {1,6,7,7,6,7,6,5,6,3,7,3,5,4,4,6,6,6,7,6,5,5,1,6,3,7}, {0,7,6,7,5,4,3,4,3,7,4,8,5,5,6,5,5,7,6,6,6,4,5,2,5,6}, {1,6,8,6,4,5,3,4,5,5,8,7,7,7,5,5,5,4,6,3,5,4,4,5,4}, {1,4,5,5,4,6,3,7,5,7,7,6,8,7,7,6,6,4,5,2,5,3,4,6,5,6}, {0,5,4,3,5,3,8,5,8,7,7,6,5,5,6,6,6,7,4,5,3,4,5,4,6,5}, {1,4,3,2,2,5,4,7,7,7,7,5,5,5,4,6,6,6,7,6,6,6,5,6,5,4}, {0,5,2,5,4,5,5,6,5,5,4,4,6,3,6,3,6,6,6,8,9,8,8,7,5}, {0,7,3,8,6,8,8,6,4,4,2,4,5,3,6,3,5,4,4,6,6,7,8,6,6,6}, {1,4,7,6,8,8,7,6,5,2,3,2,4,4,4,6,5,5,6,5,5,7,5,7,5,7}, {0,7,7,8,8,6,6,5,4,6,3,5,4,4,5,5,6,7,6,6,6,3,5,2,7,6}, {1,8,9,7,6,5,4,4,6,5,8,6,7,6,5,6,6,6,6,6,5,5,1,4,3}, {1,5,8,7,7,6,3,4,5,5,8,6,8,7,6,6,5,4,5,3,6,4,5,5,4,5}, {0,6,4,5,5,4,6,4,7,6,7,7,7,7,7,6,6,5,2,5,1,5,4,5,6,5}, {1,4,3,3,2,6,4,8,6,8,7,7,7,6,6,7,7,5,7,3,5,4,4,6,5,5}, {0,5,2,3,3,2,6,6,7,7,6,6,6,5,7,5,7,7,6,6,6,6,6,5,4}, {0,6,3,6,3,6,5,5,5,6,5,5,6,4,6,2,6,3,6,7,7,8,7,7,5,5}, {1,2,7,4,7,7,6,5,4,2,3,3,3,5,2,6,3,5,5,5,8,8,7,7,6,5}, {0,7,4,7,7,7,7,5,4,3,1,2,2,3,5,4,5,5,4,6,6,5,6,4,7}, {0,5,6,7,6,6,7,5,5,6,3,6,2,5,4,5,6,5,6,7,5,4,5,1,6,4}, {1,7,7,7,7,6,4,4,4,3,7,4,8,5,5,5,4,6,5,5,6,6,3,5,3,6}, {0,6,6,8,6,5,4,3,4,5,5,8,6,6,6,4,5,4,3,5,3,5,4,5,6,5}, {1,5,6,5,5,6,3,7,5,7,7,7,8,8,7,7,6,4,6,2,5,3,5,6,5}, {1,6,4,3,2,4,2,7,5,9,8,7,7,7,6,7,7,7,7,4,5,2,4,5,4,6}, {0,5,4,4,3,3,5,5,8,8,8,7,6,6,6,4,6,5,6,7,6,6,5,5,6,5}, {1,3,5,3,5,5,5,6,5,6,6,5,4,6,3,6,3,6,6,6,8,9,7,7,5,3}, {0,5,3,7,5,7,7,5,4,4,3,3,4,3,6,3,5,4,5,6,6,8,7,7,6}, {0,5,4,7,5,7,8,6,7,5,2,4,3,4,5,5,6,5,5,6,5,5,5,4,6,4}, {1,6,6,5,7,6,5,6,5,3,6,3,6,4,4,5,5,6,7,6,6,5,3,5,2,7}, {0,7,7,8,7,5,4,3,3,5,3,7,4,6,5,4,5,4,5,6,5,5,4,2,5,4}, {1,6,7,6,6,5,2,4,3,4,7,6,7,7,6,6,4,5,6,4,6,4,4,5,4}, {1,5,5,4,5,4,3,6,3,6,5,6,7,7,7,7,6,5,6,2,6,2,5,5,6,6}, {0,5,4,4,3,2,6,4,8,7,8,7,6,6,6,6,6,6,4,6,2,4,4,5,6,5}, {1,5,4,3,3,3,3,6,5,7,7,6,6,4,4,6,4,6,5,6,7,6,6,6,5,5}, {0,6,3,6,4,5,5,5,5,5,5,4,4,3,5,2,5,3,5,6,7,7,7,6,6}, {0,5,3,7,5,8,8,8,6,5,3,3,4,4,5,3,5,2,4,4,4,6,6,6,6,5}, {1,4,6,4,7,8,8,9,6,5,4,2,4,3,4,5,4,5,5,4,5,4,3,6,3,6}, {0,5,6,7,6,6,7,5,5,5,3,6,2,4,3,4,5,5,6,6,5,4,5,1,5,3}, {1,6,6,6,6,5,4,3,4,3,7,4,8,5,6,6,5,6,7,6,6,5,3,4,2}, {1,5,6,5,6,5,4,4,2,4,5,5,8,6,7,7,5,5,5,4,6,3,5,4,5,5}, {0,5,5,6,4,4,5,3,7,5,6,6,6,7,7,7,7,6,4,5,1,5,3,5,6,5}, {1,6,5,2,3,3,2,6,5,7,6,6,7,5,6,7,7,7,7,4,6,3,5,6,5}, {1,6,5,3,3,1,2,4,4,6,7,5,6,4,5,5,4,7,5,6,7,6,6,7,5,5}, {0,5,3,6,2,5,4,5,5,5,5,5,5,5,5,2,6,2,5,5,7,7,7,7,6,5}, {1,3,5,3,7,6,8,7,5,4,3,3,3,4,3,5,2,4,3,4,6,5,7,7,6,5}, {0,6,4,7,6,8,8,7,6,4,3,3,1,3,4,4,5,4,4,5,4,5,6,4,6}, {0,5,7,6,7,7,6,5,6,4,4,6,2,6,3,4,5,5,6,6,6,5,4,2,5,2}, {1,7,6,7,8,6,5,5,3,3,6,4,8,4,6,5,4,5,5,6,6,5,4,4,2,4}, {0,4,6,8,7,7,5,3,4,4,4,7,5,7,6,5,6,4,4,4,3,5,3,4,5,4}, {1,5,5,4,5,4,3,6,3,6,5,6,7,7,7,8,6,6,6,2,5,2,5,5,5}, {1,7,5,3,2,1,1,5,3,7,5,7,7,6,7,6,6,7,7,5,6,3,5,4,4,6}, {0,5,5,4,1,2,3,2,6,5,7,7,5,6,5,4,6,4,6,5,5,6,5,5,5,4}, {1,4,4,3,5,3,5,4,5,5,5,5,5,5,3,5,1,5,2,5,6,7,8,7,6,4}, {0,5,2,7,5,8,7,6,6,4,3,3,3,3,4,2,4,2,4,4,4,6,6,6,6}, {0,5,4,6,4,7,6,7,7,5,4,3,2,4,3,4,5,4,5,5,4,5,5,4,6,3}, {1,6,4,6,6,6,6,6,5,5,5,2,5,2,5,4,4,6,6,6,6,5,4,5,1,6}, {0,5,7,8,7,7,5,4,3,4,4,7,4,6,4,4,4,3,5,5,6,6,5,3,5,3}, {1,6,7,7,8,6,4,4,2,3,5,5,7,6,6,6,4,6,4,4,6,4,5,5,5}, {1,6,5,5,6,4,4,5,2,6,4,6,7,6,7,8,7,7,6,3,5,1,4,3,5,7}, {0,6,5,4,3,3,3,3,7,5,9,7,7,8,6,6,7,6,7,6,3,4,2,4,5,4}, {1,6,4,2,3,1,2,4,4,7,7,6,7,5,5,5,4,6,5,6,6,5,6,6,5}, {1,5,5,3,6,2,6,4,5,6,5,5,5,4,4,4,2,5,1,4,4,6,7,7,7,6}, {0,4,3,5,2,7,5,7,7,5,5,4,3,4,5,4,5,2,4,3,3,6,6,7,7,5}, {1,5,4,3,6,4,7,8,5,6,4,3,3,2,4,4,4,6,4,4,6,4,5,5,3,6}, {0,3,6,6,6,7,7,5,6,4,4,5,1,4,2,4,4,5,6,6,5,5,5,2,5}, {0,2,7,6,7,8,6,4,4,2,3,4,2,7,3,5,5,4,6,5,7,7,5,5,4,2}, {1,5,4,6,8,5,5,4,2,4,2,4,6,4,6,6,5,6,4,5,5,3,5,3,5,5}, {0,5,5,6,4,5,4,3,5,3,7,5,6,6,7,7,7,6,6,5,1,4,1,5,5,5}, {1,6,4,3,3,1,2,4,3,7,6,7,6,5,6,6,6,7,6,5,5,3,5,4,5}, {1,7,5,6,3,2,3,2,3,6,5,6,6,5,5,3,3,5,3,6,5,6,5,5,6,6}, {0,4,4,5,3,6,3,5,4,5,5,5,5,5,4,3,5,2,4,3,5,6,7,7,6,5}, {1,4,4,3,6,4,9,7,7,6,4,3,4,4,4,5,3,5,2,3,4,4,6,6,5,6}, {0,4,4,6,5,8,8,8,9,5,4,4,2,4,2,4,5,4,4,5,3,5,4,4,5}, {0,3,6,4,5,7,6,6,7,5,5,5,3,5,2,5,3,4,6,5,6,7,5,4,4,1}, {1,5,3,7,8,6,6,5,2,3,3,3,6,4,7,4,4,5,4,7,6,5,6,4,3,5}, {0,3,5,6,6,7,5,4,3,2,4,5,5,7,6,6,7,4,6,4,4,5,2,4,4}, {0,4,5,5,4,6,4,4,5,2,6,3,5,6,6,7,7,6,7,6,4,5,1,4,3,5}, {1,7,5,4,3,2,2,2,2,5,3,6,6,5,5,5,6,7,6,7,6,4,5,3,4,6}, {0,5,6,4,2,2,0,2,3,3,6,6,6,6,4,4,5,4,6,4,7,7,6,6,6,4}, {1,5,3,3,4,2,5,3,4,4,4,4,5,4,4,5,2,4,1,5,4,6,7,7,7}, {1,6,4,3,5,3,8,5,7,7,5,5,3,3,3,4,3,4,1,3,2,3,6,5,6,6}, {0,4,5,4,4,7,5,8,8,6,6,3,2,3,1,3,3,4,4,4,4,5,4,5,5,4}, {1,6,4,6,6,6,7,6,5,5,5,3,5,2,5,2,3,4,4,6,6,5,5,3,2,4}, {0,2,7,7,8,8,6,6,5,4,4,5,4,6,4,5,5,3,5,4,5,5,3,3,3}, {0,2,5,5,6,8,6,7,4,3,4,3,4,5,5,6,6,4,5,3,4,4,2,5,3,4}, {1,4,4,4,5,3,5,4,3,6,3,6,5,5,6,6,7,7,5,5,5,1,4,2,5,5}, {0,4,5,3,2,1,1,1,4,3,7,6,7,7,5,7,6,6,8,6,5,5,3,5,4,5}, {1,7,4,3,3,0,1,1,2,5,5,6,7,5,6,4,4,5,4,6,5,6,6,6,5}, {1,6,4,5,5,2,5,2,5,4,4,5,5,4,5,4,4,4,1,5,2,5,6,6,7,7}, {0,4,4,4,2,5,3,7,6,6,6,3,3,3,3,4,4,3,4,2,4,5,4,7,6,6}, {1,5,3,3,4,3,7,7,7,7,4,4,3,2,4,2,4,5,4,5,5,4,6,4,4,5}, {0,4,6,5,5,7,6,6,7,5,5,5,3,5,1,3,3,3,6,5,6,6,4,4,4}, {0,1,6,4,8,8,7,7,5,3,3,4,3,6,3,6,3,3,4,3,6,5,5,5,4,3}, {1,5,3,6,7,6,7,5,3,3,2,3,4,4,6,5,5,5,3,4,4,3,5,2,4,4}, {0,5,6,6,4,5,3,4,5,3,6,3,6,6,6,7,7,6,7,5,4,5,1,4,3}, {0,4,6,5,5,3,1,1,3,2,6,4,7,6,6,7,5,6,7,6,7,5,3,5,3,5}, {1,7,5,7,3,2,2,1,2,4,4,6,6,5,6,3,4,4,3,5,4,5,6,5,5,5}, {0,5,5,3,3,4,2,5,3,5,5,4,5,5,4,5,4,2,5,2,4,4,5,8,6,6}, {1,5,3,2,4,2,7,5,7,6,5,5,3,4,4,4,4,5,2,4,2,3,6,4,6}, {1,5,3,4,3,3,6,6,8,8,6,6,4,3,3,2,3,3,3,5,4,4,4,3,4,4}, {0,3,5,3,6,6,6,6,6,5,6,4,4,5,1,4,2,3,4,5,6,6,5,5,4,2}, {1,4,2,7,7,8,7,6,5,4,2,3,4,2,6,3,4,4,2,5,4,5,5,4,3,3}, {0,2,4,5,6,7,5,6,4,3,4,2,5,5,6,6,6,5,6,4,5,4,3,5,3}, {0,3,5,5,4,5,3,5,4,3,5,3,6,4,6,7,7,7,8,6,6,5,2,5,2,6}, {1,6,6,6,4,2,2,1,2,4,2,7,5,5,6,4,6,6,6,7,6,5,5,2,5,5}, {0,5,7,4,5,3,0,1,1,2,5,4,5,6,5,6,3,4,5,4,6,6,6,7,6,5}, {1,6,4,4,4,3,5,2,4,4,4,5,4,5,5,4,4,5,1,4,3,5,6,6,7}, {1,6,5,4,4,3,7,5,9,8,7,7,4,5,4,3,5,4,3,4,1,2,4,3,6,5}, {0,5,4,3,3,5,4,8,7,8,8,4,5,4,2,4,3,4,4,4,5,4,4,5,3,4}, {1,4,2,5,4,5,6,6,6,6,5,5,4,3,4,1,3,3,3,5,5,6,5,4,3,3}, {0,1,5,4,7,7,6,6,4,3,4,4,4,6,3,6,4,3,5,3,6,4,5,4,3}, {0,1,4,3,5,7,6,7,4,3,3,2,4,4,5,7,5,6,6,3,5,4,3,4,2,4}, {1,4,4,5,5,4,5,3,3,4,2,5,3,5,5,5,7,6,6,6,5,3,4,1,5,4}, {0,5,6,5,4,2,1,1,1,1,5,3,5,5,4,6,5,6,7,6,7,5,4,5,3}, {0,5,7,5,6,3,1,1,0,1,3,3,5,5,5,6,3,4,4,3,6,4,5,6,6,7}, {1,6,5,6,4,3,5,3,6,4,5,5,4,5,5,4,5,4,2,4,1,4,4,5,7,6}, {0,6,5,4,2,4,3,7,6,7,7,5,5,3,3,4,3,3,4,1,3,2,4,7,5,7}, {1,5,4,4,3,3,6,5,7,7,6,7,3,3,3,2,3,3,3,4,4,3,5,3,5}, {1,4,4,6,4,6,6,7,7,6,6,7,5,5,5,3,4,2,3,4,4,6,5,5,4,2}, {0,1,4,2,6,7,8,8,6,5,4,4,5,5,4,5,3,4,4,2,6,4,5,4,3,3}, {1,3,2,5,6,7,8,6,6,5,3,5,3,5,5,5,6,6,4,6,3,5,4,2,4,3}, {0,4,4,4,4,5,3,5,3,3,5,3,6,5,5,7,6,7,8,7,6,5,3,4,2}, {0,5,5,5,6,4,2,1,0,0,3,3,6,4,5,6,5,7,6,7,7,6,5,6,3,5}, {1,5,5,7,5,5,2,0,1,2,2,5,4,6,7,4,6,4,4,5,4,5,5,5,6,5}, {0,5,6,4,4,4,2,5,2,4,4,4,4,5,5,5,4,4,3,2,4,2,5,7,7,7}, {1,6,4,4,3,2,6,4,7,6,5,6,3,4,3,3,3,4,3,3,2,4,4,4,7}, {1,5,5,4,2,2,3,3,7,7,7,8,4,5,3,2,4,2,4,4,4,4,5,4,5,4}, {0,4,5,3,5,4,6,6,6,6,6,5,5,4,3,4,1,3,3,3,5,5,6,5,4,3}, {1,4,3,6,5,8,9,7,6,5,4,3,4,4,5,3,4,2,2,4,2,5,4,4,4}, {1,3,2,4,3,6,7,6,8,4,4,3,2,4,4,4,6,6,5,6,3,5,4,3,4,2}, {0,5,4,5,5,5,4,5,3,3,4,2,5,3,5,5,5,7,7,7,7,5,3,4,1,5}, {1,4,6,7,5,5,4,2,2,3,2,5,4,6,6,5,7,5,7,6,6,6,4,2,5,3}, {0,5,7,5,6,4,2,2,1,2,3,4,6,5,4,6,3,4,5,3,5,4,5,6,6}, {0,6,6,5,5,3,3,5,2,5,3,4,5,5,5,5,4,5,3,3,4,1,4,5,6,8}, {1,6,5,5,2,2,4,2,7,6,7,7,5,7,4,5,5,4,5,4,2,3,3,3,6,4}, {0,6,5,3,3,2,2,5,5,7,8,6,7,4,3,3,3,4,3,4,4,4,5,5,4,5}, {1,4,3,5,3,6,5,6,6,7,5,6,5,4,5,2,4,2,3,4,4,6,5,5,4}, {1,3,1,4,3,6,7,8,7,6,5,4,3,4,5,4,6,4,4,4,4,6,5,6,5,3}, {0,3,3,2,5,5,6,7,6,5,3,3,4,3,4,5,6,6,7,5,7,4,5,5,3,5}, {1,3,5,5,5,5,6,4,5,3,3,5,3,5,4,5,6,6,7,8,6,6,5,2,5,3}, {0,5,7,6,7,4,2,2,1,1,4,2,6,4,4,5,4,7,5,7,7,6,5,6,4}, {0,6,7,7,8,5,4,2,0,2,1,2,5,4,5,6,4,5,3,4,5,3,5,4,6,6}, {1,6,6,7,4,5,4,3,5,3,5,4,5,5,5,6,6,5,4,4,1,4,2,4,6,5}, {0,7,6,4,4,3,3,6,4,8,7,6,7,4,5,4,4,5,4,3,4,2,3,4,4,7}, {1,4,5,4,2,3,4,5,7,7,7,8,4,5,3,2,4,3,3,3,4,4,4,4,5}, {1,4,4,4,3,5,4,5,6,6,6,7,5,6,5,3,4,2,4,3,3,6,5,6,5,3}, {0,3,3,2,5,5,7,7,6,6,4,4,4,4,5,6,4,5,4,3,5,4,6,4,4,4}, {1,3,2,4,4,6,7,6,8,4,4,4,2,4,5,6,6,6,6,7,4,6,4,3,3,2}, {0,4,4,4,5,5,4,6,2,4,4,2,5,2,4,5,5,8,8,7,7,6,4,5,2}, {0,5,4,6,8,5,4,3,0,1,2,1,5,2,5,4,4,6,5,7,7,6,6,5,4,5}, {1,5,6,8,6,7,4,2,2,0,3,3,4,6,5,5,7,4,6,4,4,6,4,6,6,6}, {0,7,7,5,6,4,4,4,2,5,3,4,5,5,5,6,5,5,3,3,4,2,4,5,6}, {0,9,7,6,5,3,3,4,3,7,6,7,6,4,6,3,4,4,4,4,3,2,4,4,4,7}, {1,5,7,5,3,3,3,3,5,5,7,8,5,7,4,5,4,3,4,3,4,5,5,5,6,3}, {0,5,4,4,5,3,6,6,7,7,7,5,7,5,6,4,3,4,2,4,5,5,6,5,5,4}, {1,2,2,4,4,7,8,9,8,7,6,6,5,5,5,5,6,3,4,5,3,6,4,5,4}, {1,2,3,2,2,4,6,7,8,5,6,4,3,4,3,5,5,6,7,6,5,7,4,5,4,3}, {0,5,3,4,4,4,4,5,3,4,3,3,5,2,4,4,5,7,6,8,8,6,6,4,3,4}, {1,2,6,6,6,6,3,2,1,1,2,4,3,6,4,5,6,4,8,6,6,7,5,4,5,3}, {0,6,7,6,8,4,4,2,0,1,1,2,4,5,5,6,4,6,3,4,5,3,5,5,6}, {0,7,6,6,6,4,5,4,3,5,2,4,4,4,5,5,4,6,4,4,4,1,4,2,5,7}, {1,6,8,6,4,3,2,2,5,4,7,6,6,7,3,5,4,4,6,4,3,4,3,4,6,5}, {0,8,4,5,3,2,3,3,3,6,7,7,7,4,5,3,3,4,2,4,5,5,5,5,5,6}, {1,4,5,4,3,6,5,6,7,7,7,7,6,7,4,4,4,1,3,3,4,6,5,6,5}, {1,4,3,3,3,6,5,8,9,7,7,5,5,4,4,5,5,3,4,4,3,6,4,7,4,5}, {0,4,3,3,4,4,6,8,6,8,5,5,4,2,4,4,5,6,6,6,6,4,6,3,3,4}, {1,2,4,5,5,5,6,5,6,4,5,5,3,5,4,5,6,6,8,7,7,7,5,3,4}, {1,1,5,5,6,7,5,5,4,1,2,3,4,5,4,6,5,4,7,5,7,7,6,6,5,4}, {0,5,5,6,8,6,8,4,2,3,1,3,4,4,6,6,5,7,4,5,4,3,5,3,5,6}, {1,6,6,7,5,6,3,3,4,2,5,4,5,5,5,6,7,5,6,4,3,4,2,5,5,6}, {0,8,6,5,4,2,2,4,3,7,5,7,7,4,7,4,5,6,5,5,4,2,4,4,5}, {0,7,5,7,5,3,3,3,3,6,6,8,8,6,7,4,5,3,2,4,3,5,5,5,5,6}, {1,3,5,3,4,5,3,6,5,6,7,7,6,6,5,5,4,2,3,3,4,5,5,8,6,5}, {0,4,2,2,3,4,7,7,7,8,5,6,4,4,5,4,4,5,3,4,5,3,7,4,6,4}, {1,2,2,2,3,5,6,7,8,5,7,4,4,5,4,6,5,6,7,7,5,7,4,5,4}, {1,3,5,3,5,5,5,5,5,4,6,3,3,5,2,4,4,5,7,6,8,8,6,7,5,3}, {0,6,4,7,8,7,8,5,3,3,1,2,3,3,5,3,3,5,3,7,6,6,6,5,5,5}, {1,4,7,8,7,9,6,5,3,1,2,2,3,5,5,6,6,3,7,3,5,5,4,5,5,6}, {0,7,6,6,8,5,5,4,3,5,3,5,5,4,6,6,6,6,5,5,4,2,4,3,5}, {0,7,6,8,6,5,4,3,4,7,5,8,7,6,7,4,6,4,5,5,4,3,4,2,3,5}, {1,5,8,5,5,4,3,3,4,5,7,7,8,8,5,6,4,4,4,3,4,4,5,6,5,5}, {0,6,3,4,3,3,5,5,6,6,6,7,7,6,7,5,5,4,2,3,3,4,7,5,6,5}, {1,3,2,3,2,5,6,8,9,7,8,5,6,5,5,6,6,5,5,4,3,6,4,7,4}, {1,4,3,2,2,4,4,6,8,7,8,5,5,4,4,5,5,6,7,7,6,7,5,7,4,4}, {0,4,3,5,4,5,5,6,4,6,3,4,3,2,4,3,5,6,5,8,8,7,8,5,5,4}, {1,3,6,6,7,8,5,5,2,2,2,2,3,5,4,4,6,4,7,5,8,7,7,7,5,4}, {0,6,6,6,8,5,7,4,2,2,0,2,3,4,6,6,4,7,4,6,5,4,5,5,6}, {0,7,7,7,8,6,7,4,4,5,3,5,3,5,5,5,6,6,5,6,4,3,4,2,5,6}, {1,6,9,7,6,5,3,3,4,4,7,6,6,7,4,6,4,5,5,4,5,4,3,4,5,6}, {0,9,6,8,5,3,4,2,4,6,6,8,7,5,7,3,4,3,2,4,3,4,5,5,5}, {0,7,4,6,4,5,5,4,6,7,7,8,7,8,8,6,6,5,3,4,2,3,5,5,7,5}, {1,4,3,2,2,4,4,8,8,9,9,6,7,5,6,6,6,5,6,4,4,5,4,7,4,5}, {0,4,2,2,3,2,5,6,6,9,5,8,4,5,4,3,5,6,5,7,6,6,7,4,5,4}, {1,3,4,3,5,4,4,5,5,3,6,4,4,4,3,5,4,5,7,6,9,8,7,6,4}, {1,3,5,4,7,7,7,7,4,3,2,1,2,4,4,5,4,4,6,5,8,5,7,6,5,5}, {0,5,4,7,8,7,10,6,5,3,1,3,2,3,4,4,6,6,4,7,3,4,4,3,6,5}, {1,5,7,7,6,8,4,6,4,3,5,3,5,5,4,6,6,7,7,5,6,4,2,5,4,6}, {0,9,7,8,6,3,3,3,2,6,4,6,6,5,7,3,6,4,6,6,5,5,5,4,4}, {0,7,6,8,5,6,4,2,4,4,5,7,7,7,9,5,7,3,4,4,4,5,5,5,6,6}, {1,4,6,4,5,4,4,6,5,6,7,7,8,8,6,8,5,4,4,2,4,3,5,7,6,7}, {0,5,3,3,3,3,6,6,8,9,7,8,5,6,5,5,5,6,4,5,4,4,6,4,8,4}, {1,5,3,2,2,4,4,6,8,6,8,4,6,4,4,5,6,6,7,7,7,8,5,7,3}, {1,5,4,3,5,4,6,6,5,5,6,4,5,4,3,4,3,5,5,6,9,8,8,8,5,4}, {0,4,3,6,6,8,9,7,6,4,2,3,3,4,5,4,4,5,4,7,5,8,6,6,6,5}, {1,4,5,5,7,9,6,8,4,4,3,1,2,4,4,5,6,5,8,4,6,5,5,6,5}, {1,6,7,7,7,7,4,6,4,4,4,2,5,4,4,6,4,6,7,5,7,4,3,4,3,5}, {0,7,7,9,6,5,4,3,2,4,3,7,6,7,7,5,8,4,6,6,5,5,3,3,3,4}, {1,5,9,6,7,4,3,3,3,4,6,6,8,8,6,8,4,6,4,3,4,4,5,5,6,5}, {0,7,4,7,4,5,5,4,6,5,6,7,6,6,7,5,6,4,3,4,2,4,5,5,8}, {0,6,5,4,1,2,4,3,7,8,7,8,6,7,5,5,7,6,6,5,5,5,6,4,8,4}, {1,7,4,2,2,2,3,5,6,6,9,6,7,4,4,5,4,6,5,6,7,7,6,8,5,6}, {0,5,4,6,4,5,6,6,6,7,5,6,4,5,4,3,4,3,5,7,7,8,8,7,6,4}, {1,3,6,5,7,9,7,8,5,4,3,3,3,4,3,4,4,4,7,4,8,6,8,7,5}, {1,5,6,5,7,9,8,10,5,6,3,2,2,2,3,4,5,6,7,4,7,4,5,5,4,5}, {0,5,6,7,8,7,8,5,7,5,4,6,4,5,5,5,7,7,7,7,5,5,4,2,4,4}, {1,6,8,7,9,5,4,4,4,4,6,5,7,7,5,7,4,7,5,5,6,4,4,4,4,5}, {0,7,6,10,5,5,4,2,3,4,6,8,7,7,9,4,7,4,4,4,3,4,4,4,6}, {0,6,4,6,3,5,4,3,5,5,7,7,7,8,8,8,8,6,6,4,3,4,5,5,7,5}, {1,6,5,3,2,1,2,4,6,7,8,7,8,6,7,7,6,7,6,5,5,4,4,7,5,7}, {0,4,5,3,2,2,3,5,6,8,7,9,4,6,4,4,5,5,6,7,7,7,8,4,7,4}, {1,5,5,4,5,5,5,6,6,4,6,4,5,3,3,4,3,5,6,7,9,8,8,9,6}, {1,5,5,4,6,7,8,9,6,6,3,2,2,3,3,4,4,4,5,4,8,5,9,7,6,6}, {0,5,4,6,7,8,9,7,9,4,5,3,2,3,4,4,5,5,5,7,3,6,4,4,5,4}, {1,6,7,6,7,8,6,7,4,5,4,3,5,4,4,5,5,7,6,6,6,4,3,3,3}, {1,6,8,8,10,7,7,5,3,3,5,4,6,5,6,7,3,7,4,6,5,5,4,3,3,4}, {0,6,6,9,6,8,5,4,4,3,4,6,7,8,9,6,9,4,6,4,3,4,3,4,5,5}, {1,5,6,4,6,3,5,5,5,7,7,7,8,8,8,8,6,8,5,4,4,3,4,5,5,7}, {0,5,4,3,2,3,4,5,8,9,8,10,7,8,6,6,6,6,6,5,4,4,6,4,8}, {0,4,7,3,2,1,1,3,5,7,7,9,5,9,4,6,4,4,5,6,7,7,8,7,9,5}, {1,6,4,3,4,3,5,5,5,6,6,5,6,4,5,4,3,4,4,5,8,7,9,9,6,6}, {0,4,3,5,5,7,8,7,8,5,4,3,3,4,4,4,5,5,4,7,4,8,5,7,6,5}, {1,4,4,4,7,8,8,10,6,7,4,3,3,3,4,5,5,6,7,5,7,4,6,4,5}, {1,6,6,6,8,8,7,8,4,6,4,3,4,3,4,4,4,6,6,6,7,5,5,3,3,4}, {0,5,6,10,7,9,6,4,3,3,3,5,5,6,6,5,7,4,7,5,6,6,5,4,4,4}, {1,6,8,6,9,5,6,3,2,3,4,5,7,8,7,9,4,7,4,5,4,4,5,5,6,6}, {0,7,6,8,4,6,5,5,5,5,7,8,7,8,8,7,8,5,5,3,2,3,4,4,8}, {0,6,8,5,3,3,2,3,5,6,8,9,7,8,5,7,6,6,6,5,5,5,4,4,8,5}, {1,9,5,5,3,2,2,3,5,7,8,6,9,4,6,4,4,5,5,6,6,7,7,8,5,8}, {0,4,5,4,4,5,5,6,7,6,6,7,4,6,4,4,4,3,5,5,5,9,8,7,6,4}, {1,3,4,3,6,7,8,9,7,7,5,4,4,4,4,5,4,3,4,3,7,5,8,6,6}, {1,5,4,4,5,7,7,10,7,9,5,4,3,3,2,4,4,5,6,4,7,4,7,4,5,5}, {0,4,6,7,7,7,8,6,6,4,5,4,4,5,4,5,6,5,7,7,6,7,4,4,4,3}, {1,5,8,7,9,6,6,4,3,3,4,4,6,6,6,8,4,8,5,8,6,5,4,4,3}, {1,4,6,6,10,6,8,5,4,4,3,4,6,6,7,9,5,8,3,6,4,4,4,4,5,5}, {0,5,6,7,4,6,3,5,5,4,6,6,6,8,7,7,9,6,7,5,5,4,4,5,8,6}, {1,9,5,5,3,1,2,3,4,6,7,7,9,6,8,5,7,7,6,7,6,5,5,6,5,9}, {0,5,7,4,2,2,2,4,6,7,7,10,6,9,4,5,4,4,6,6,7,7,8,6,8}, {0,4,7,4,4,5,4,5,6,6,6,7,5,6,4,5,3,2,4,4,5,7,7,9,8,7}, {1,6,5,4,6,6,8,9,8,9,5,5,4,3,4,3,3,3,3,3,6,4,9,5,7,6}, {0,5,4,5,6,7,9,8,11,6,8,3,3,3,3,4,5,6,6,8,5,7,4,5,4,3}, {1,5,5,6,8,7,7,8,5,6,5,4,5,3,4,5,4,7,6,8,8,5,6,3,3}, {1,4,5,7,9,8,9,6,5,4,3,4,6,6,7,7,4,7,4,7,5,5,5,4,4,4}, {0,4,5,8,6,10,5,6,4,3,4,4,6,7,8,7,9,4,8,4,5,4,4,4,5,5}, {1,7,6,5,6,3,4,3,3,4,4,5,7,7,8,9,7,9,6,6,4,3,4,5,5,8}, {0,6,7,5,2,3,2,3,5,5,7,9,6,9,5,7,6,7,7,5,5,5,5,5,7}, {0,4,9,4,4,3,1,2,3,4,6,8,6,9,4,6,4,4,5,5,6,6,7,7,8,6}, {1,8,4,6,5,4,5,5,5,6,5,5,6,3,6,3,4,3,3,3,6,6,9,7,8,7}, {0,4,5,4,4,6,7,8,9,6,6,4,4,4,3,4,4,4,3,5,4,8,5,9,6,6}, {1,5,4,4,6,6,8,10,7,9,4,5,3,2,3,4,4,5,6,5,8,4,6,3,5}, {1,5,5,6,7,7,8,8,6,8,4,6,5,3,4,4,3,5,4,7,6,6,7,3,4,3}, {0,4,6,8,8,11,8,7,5,3,4,4,5,6,5,5,7,4,8,4,7,6,5,4,4,4}, {1,5,7,6,11,6,9,4,4,3,3,4,6,6,7,9,5,9,3,7,4,4,4,3,4}, {1,6,6,6,8,4,7,3,5,5,5,6,7,7,9,8,8,9,6,7,4,3,4,3,3,7}, {0,5,8,5,4,3,1,2,3,5,7,8,7,9,6,9,6,7,7,6,7,6,5,4,6,5}, {1,9,5,7,3,2,2,1,3,4,6,6,9,5,8,4,6,4,4,6,5,6,7,7,6,8}, {0,5,7,3,4,4,4,5,6,5,6,6,5,7,4,6,4,4,4,4,5,8,7,9,7}, {0,6,5,4,3,4,5,7,8,7,8,4,5,3,4,4,4,4,4,5,4,6,4,9,5,7}, {1,5,4,3,4,5,7,9,8,10,5,7,3,3,2,2,3,4,5,5,7,4,8,3,6,4}, {0,4,5,6,6,7,8,7,7,4,7,4,4,4,3,4,4,4,8,6,8,8,5,6,4,3}, {1,4,6,7,10,7,8,5,4,4,3,4,4,4,5,6,3,8,3,8,5,6,5,4,4}, {1,4,5,6,9,7,10,5,7,4,3,4,5,6,7,7,6,9,4,8,3,5,3,3,4,5}, {0,5,6,6,5,7,3,6,4,4,5,6,6,7,6,8,8,7,8,4,5,3,2,3,5,5}, {1,10,6,7,5,3,3,1,3,5,5,6,9,5,9,4,7,6,6,6,5,4,4,5,4,8}, {0,5,9,4,4,2,1,2,3,5,7,8,6,9,4,7,4,5,5,5,6,6,6,7,8}, {0,5,7,3,5,3,3,5,5,6,6,6,6,7,4,7,4,4,4,3,4,6,5,9,7,8}, {1,6,4,3,3,4,6,7,8,10,6,8,5,4,4,3,4,4,4,3,5,3,7,4,9,5}, {0,5,4,3,3,5,6,7,10,7,9,4,6,3,3,4,4,4,5,6,5,8,4,7,3,4}, {1,4,4,6,6,6,7,7,5,7,3,5,4,4,4,4,4,7,5,8,7,7,6,4,4}, {1,4,4,6,8,7,10,7,6,5,4,4,5,5,5,5,5,7,3,8,4,7,5,4,4,3}, {0,3,4,7,6,10,5,9,4,4,3,3,4,6,6,7,8,6,9,4,7,4,4,4,5,4}, {1,6,6,6,7,4,6,3,5,4,4,4,5,5,7,7,8,9,7,8,4,4,3,3,5}, {1,7,6,9,5,3,3,0,2,2,4,6,7,6,9,5,8,5,7,7,6,6,6,5,5,7}, {0,6,10,5,7,2,2,2,1,3,4,6,6,9,5,8,3,6,3,4,5,6,7,7,7,7}, {1,9,4,7,4,4,4,4,5,6,5,6,6,5,7,4,5,2,2,3,3,4,7,6,9,8}, {0,6,6,4,4,5,6,8,9,6,9,4,6,3,4,4,3,4,4,4,3,7,4,9,5}, {0,7,5,4,3,4,5,7,9,7,10,5,8,3,4,2,2,3,5,5,5,7,4,8,3,6}, {1,3,4,5,5,6,8,8,7,9,6,8,5,5,5,4,4,4,4,7,5,8,6,4,5,2}, {0,2,4,6,7,10,7,9,6,5,5,4,5,5,5,4,6,3,7,2,8,4,6,4,4,3}, {1,3,5,5,8,6,10,5,6,3,3,3,4,4,6,7,6,8,4,8,3,4,3,3,3}, {1,5,5,6,6,4,7,2,5,2,4,5,5,6,8,6,9,8,8,10,6,6,4,3,3,5}, {0,5,8,5,6,4,2,2,0,2,4,6,6,8,5,9,5,9,6,7,7,5,5,5,6,5}, {1,9,5,9,4,4,2,1,2,2,4,6,8,5,9,4,7,3,5,4,5,5,7,7,7,8}, {0,5,8,3,5,3,3,4,5,4,6,5,5,6,4,6,3,4,3,3,4,7,6,10,8}, {0,8,6,4,3,3,3,5,7,7,9,5,7,3,4,4,3,4,4,4,3,5,4,9,5,9}, {1,5,5,4,4,4,5,7,7,11,7,10,4,6,3,3,2,4,3,5,6,5,8,3,7,4}, {0,5,5,5,5,7,7,8,8,6,8,4,6,4,3,3,3,3,6,4,8,6,6,6,3,3}, {1,3,4,6,9,8,10,7,7,5,4,4,4,4,5,5,3,7,3,8,3,7,4,4,4}, {1,2,3,4,7,7,10,5,9,4,5,4,3,4,6,7,7,8,5,9,3,7,3,3,3,4}, {0,3,5,4,5,6,3,6,3,5,4,4,6,6,5,9,6,9,9,7,8,5,4,4,3,5}, {1,8,6,8,4,4,2,1,2,2,4,6,7,5,9,4,8,5,7,7,6,5,4,5,5}, {1,7,5,9,4,6,3,1,1,1,2,4,5,6,9,5,8,3,7,4,5,5,5,6,8,7}, {0,6,8,4,6,3,4,3,3,4,5,4,6,5,5,7,3,5,3,3,3,4,4,8,6,9}, {1,7,5,4,2,3,4,6,7,8,7,9,4,7,4,4,4,3,4,3,4,3,7,3,9,4}, {0,6,4,4,3,3,4,6,9,7,10,5,7,3,4,2,2,3,4,5,5,7,5,8,3}, {0,6,4,4,4,6,5,7,6,7,7,4,6,3,4,3,2,1,3,3,6,5,8,7,4,4}, {1,2,2,4,6,7,10,7,10,5,5,4,3,5,5,5,4,5,3,8,3,8,4,6,4,3}, {0,3,3,4,6,9,6,11,5,7,4,3,4,4,5,6,7,6,8,3,8,3,5,3,3,4}, {1,5,5,6,7,5,7,3,6,3,4,5,4,5,7,5,8,8,8,8,5,5,2,2,4}, {1,5,6,9,6,7,4,1,2,1,3,4,5,6,8,4,9,4,8,6,7,7,5,5,5,6}, {0,6,9,5,10,4,4,1,1,2,2,4,6,7,5,9,3,7,3,5,4,5,5,6,6,7}, {1,8,5,8,4,5,3,4,4,6,5,7,6,7,7,5,7,3,4,2,2,3,6,5,9,6}, {0,7,5,3,3,2,4,5,8,7,10,5,8,4,5,4,3,4,3,3,2,5,3,8,4}, {0,9,4,5,3,2,3,5,6,7,9,6,9,3,6,2,3,3,3,4,5,5,4,8,4,6}, {1,2,5,3,4,5,6,6,7,7,6,7,4,6,4,4,3,4,3,7,4,8,6,6,5,2}, {0,3,2,4,5,8,7,10,6,7,4,3,4,4,5,4,5,3,6,3,9,4,7,4,4,3}, {1,3,2,4,7,6,11,5,8,3,4,3,2,4,5,5,6,8,4,9,3,7,3,3,3}, {1,4,3,6,5,5,6,2,6,2,4,3,3,4,4,4,7,7,9,9,7,8,4,4,4,4}, {0,4,8,6,8,4,4,2,-1,1,1,3,5,6,4,8,3,9,5,7,7,6,6,4,4,5}, {1,8,6,11,5,7,2,2,2,2,2,4,5,5,8,3,8,3,6,3,3,4,5,5,7,7}, {0,7,9,4,7,3,5,4,4,5,5,4,6,6,5,7,3,5,2,2,2,3,4,8,6}, {0,10,7,5,5,3,3,4,6,7,8,5,9,4,6,3,3,3,3,3,3,4,2,7,3,9}, {1,4,7,3,3,3,4,5,6,9,7,11,5,9,2,4,3,3,3,4,5,5,6,3,7,2}, {0,5,2,3,3,5,5,7,7,7,8,6,8,4,6,4,3,2,4,3,7,5,7,6,3}, {0,4,1,2,3,6,6,10,7,9,6,5,5,4,5,4,5,3,6,2,7,2,8,4,5,3}, {1,2,2,3,4,5,8,6,10,4,6,2,4,4,4,5,6,7,6,10,4,9,3,5,3,3}, {0,3,4,4,5,5,4,6,2,5,2,3,3,4,4,6,5,9,8,8,9,6,5,3,3,4}, {1,6,5,10,6,7,3,1,2,1,2,3,4,4,7,3,9,4,8,6,6,6,4,4,4}, {1,6,5,9,5,10,3,4,1,0,1,2,3,5,7,4,8,2,7,3,5,4,5,5,7,7}, {0,7,8,5,8,3,5,2,3,3,4,4,5,4,5,6,4,6,2,4,2,2,2,6,5,10}, {1,7,7,6,3,2,2,3,5,7,6,9,4,8,3,5,3,4,4,3,3,2,5,3,9,4}, {0,9,4,5,2,2,3,5,6,7,10,6,10,3,6,2,3,2,3,4,4,5,5,8,4}, {0,8,3,5,4,5,5,7,6,8,8,6,7,4,6,3,4,2,3,1,5,3,7,6,5,5}, {1,2,3,2,4,5,8,7,11,6,7,5,4,4,3,4,4,5,3,7,3,9,3,7,4,4}, {0,2,1,2,3,6,6,10,5,8,3,5,2,3,3,5,5,7,8,5,9,3,7,2,4,2}, {1,4,3,6,5,5,6,3,7,2,5,3,4,3,5,4,7,6,8,8,6,7,3,3,3}, {1,3,4,8,5,9,4,3,2,0,1,2,3,4,5,4,7,3,8,5,7,6,6,5,4,4}, {0,4,8,5,11,4,7,1,2,1,1,1,3,4,4,8,3,8,2,6,3,4,4,5,5,7}, {1,7,5,8,4,6,2,4,3,3,4,6,4,6,6,6,7,4,6,3,3,2,4,3,8,5}, {0,8,5,5,4,1,2,3,5,6,8,5,9,4,7,4,5,4,3,4,3,3,2,8,3}, {0,10,4,7,3,2,2,3,4,6,8,6,10,3,7,2,4,1,3,3,4,4,5,6,4,7}, {1,3,6,2,4,4,5,5,7,6,7,7,5,7,3,5,3,4,1,4,3,8,5,8,6,3}, {0,4,2,3,3,5,5,10,6,9,5,6,4,3,5,4,5,3,5,3,8,2,8,4,6}, {0,3,2,2,3,4,6,9,6,11,4,8,3,4,3,4,5,6,7,5,8,3,8,2,5,2}, {1,4,4,4,4,6,6,5,7,2,6,3,4,2,3,3,6,4,8,7,8,8,4,5,2,3}, {0,3,7,6,10,6,7,3,1,2,0,2,3,4,4,6,2,8,3,9,6,6,6,4,4,4}, {1,5,5,10,5,10,3,4,1,1,1,3,4,5,7,5,9,3,7,3,5,3,4,4,5}, {1,5,6,7,4,7,2,5,2,4,4,4,4,6,4,6,6,5,7,3,4,2,3,2,6,4}, {0,10,6,7,4,2,2,1,3,4,7,5,9,4,8,2,5,3,3,4,2,3,2,5,2,9}, {1,4,9,3,4,1,1,2,4,5,6,9,5,9,3,6,1,4,3,4,3,5,5,4,7,3}, {0,7,2,5,3,3,3,5,5,6,6,6,7,4,7,2,4,2,3,1,6,3,8,5,5}, {0,4,1,2,2,4,4,8,7,10,6,7,4,5,4,4,4,3,4,2,7,2,8,2,7,3}, {1,3,1,1,2,3,6,5,10,4,8,2,4,2,2,3,4,5,5,8,5,9,3,7,2,4}, {0,3,4,3,5,5,5,6,2,6,2,4,1,3,2,4,3,7,5,8,8,7,7,3,4,3}, {1,5,4,8,6,9,4,4,2,0,2,2,4,4,5,3,7,2,8,4,7,5,5,4,3}, {1,3,5,7,5,11,4,8,2,2,1,2,2,4,4,5,7,3,8,1,5,2,4,3,5,4}, {0,7,7,7,9,4,8,3,4,3,4,3,5,4,6,4,5,7,3,5,1,2,1,3,3,8}, {1,6,9,6,4,4,1,3,3,5,6,8,5,9,3,7,3,5,4,4,4,2,3,2,7}, {1,3,9,4,6,2,2,2,2,4,6,8,6,10,4,9,2,6,2,3,3,4,4,5,6,4}, {0,7,2,6,1,4,3,5,5,8,7,8,8,6,8,4,6,2,3,1,4,2,7,4,7,5}, {1,3,3,0,2,2,5,5,10,6,9,5,6,4,4,5,4,4,3,5,2,8,3,9,4,6}, {0,2,2,1,2,3,4,8,5,10,3,7,2,3,2,3,4,6,6,6,9,4,8,2,6}, {0,2,3,3,4,4,5,5,3,6,1,5,2,4,2,4,3,6,5,8,8,8,9,5,5,2}}

local sun_data = {{6,6,6,6,5,7,6,7,6,7,5,7,6,7,8,9,10,10,10,10,9,8,7,5}, {4,3,4,3,5,5,8,8,11,11,11,11,11,10,8,8,7,7,6,7,7,8,6,8}, {6,8,6,7,6,7,7,7,7,7,7,7,6,5,5,3,3,2,4,3,6,7,9,8}, {9,8,8,5,4,3,2,1,1,1,0,2,1,4,3,5,4,6,6,8,7,8,8,9}, {9,8,7,5,5,3,3,1,2,1,3,3,6,6,8,8,8,8,7,6,6,6,6,6}, {5,6,6,7,6,6,5,6,5,6,4,5,5,6,6,5,5,5,4,3,3,2,3,3}, {5,5,7,7,10,9,10,8,7,6,4,3,1,0,0,1,1,2,1,3,3,5,5,6}, {5,6,6,6,6,6,5,5,4,2,2,-1,-1,-1,0,0,2,2,5,5,6,7,7,7}, {6,5,4,3,3,3,2,4,3,5,4,5,4,5,5,5,4,5,4,6,6,6,6,5}, {6,4,5,4,5,4,6,6,7,8,8,8,9,7,6,5,3,3,1,1,0,3,3,5}, {6,8,8,9,9,8,8,7,7,5,5,4,4,3,4,2,3,1,1,0,2,2,5,4}, {6,7,8,8,7,8,6,6,3,4,2,2,3,4,4,6,7,7,7,7,6,6,6,5}, {5,4,5,4,6,4,5,5,6,6,7,7,8,9,10,11,11,11,10,10,9,9,6,6}, {4,5,3,4,5,6,7,8,9,10,11,11,11,11,10,9,10,8,9,7,9,8,8,8}, {8,7,8,7,8,9,8,9,8,8,7,7,6,7,5,5,4,5,5,8,8,10,10,11}, {11,11,9,8,8,6,5,3,4,3,4,2,4,4,5,5,7,8,9,9,9,10,9,10}, {9,9,8,8,6,7,4,5,3,5,4,7,7,8,9,10,10,10,9,8,9,7,7,6}, {7,6,7,6,7,7,8,8,8,8,8,8,8,8,7,7,6,7,5,5,4,4,3,5}, {4,5,5,6,7,7,8,8,8,5,6,3,3,2,2,2,4,3,4,4,5,6,6,6}, {6,5,5,4,3,4,2,3,2,3,1,1,0,2,1,3,4,6,6,8,8,7,8,6}, {5,3,3,0,0,-1,0,-1,0,0,3,3,5,5,6,6,6,6,6,6,6,7,6,7}, {5,5,4,4,3,4,3,4,4,5,6,6,7,6,6,5,5,3,3,2,3,3,6,5}, {7,8,9,9,9,9,7,6,4,4,2,2,1,2,1,2,1,2,2,2,3,4,5,6}, {8,8,10,9,9,7,7,5,5,2,1,-1,0,1,2,3,5,6,7,8,7,8,7,7}, {5,6,5,7,6,8,6,7,7,7,5,6,6,6,6,6,8,7,9,8,9,7,7,5}, {6,4,5,4,6,7,8,10,11,11,11,10,9,8,6,6,4,5,3,5,5,6,6,8}, {7,7,7,7,8,8,9,8,9,8,8,6,6,4,4,3,3,1,2,2,5,6,7,8}, {9,9,8,8,6,5,4,4,3,4,3,4,4,5,5,6,5,6,6,6,7,6,7,7}, {8,7,7,5,6,4,4,3,3,4,5,6,8,9,9,10,9,9,7,7,5,5,4,5}, {4,6,5,7,7,8,8,8,9,8,8,8,8,8,9,8,9,7,6,5,5,4,4,4}, {4,4,6,7,8,9,9,9,7,7,4,4,2,3,2,3,3,5,5,6,6,7,8,7}, {7,6,6,4,6,4,5,3,4,2,3,2,2,2,3,4,5,7,8,10,9,11,9,9}, {6,7,4,4,2,2,2,2,3,4,5,6,7,7,7,7,7,7,8,7,8,7,8,7}, {8,6,6,4,5,4,5,6,6,8,7,8,8,8,7,7,5,4,3,4,3,5,6,8}, {8,9,9,9,9,8,8,6,7,4,4,3,3,2,3,2,3,2,2,3,3,5,5,7}, {7,8,7,8,6,7,5,5,3,3,0,1,1,2,3,4,6,6,8,8,8,7,7,5}, {6,4,5,4,5,5,6,5,5,5,6,7,7,7,8,9,8,9,8,9,8,9,6,7}, {5,5,4,4,5,6,7,8,9,8,9,9,9,8,7,6,6,4,6,5,6,6,7,7}, {8,8,8,9,8,8,7,8,6,7,6,5,4,4,3,3,2,3,3,4,6,7,9,9}, {11,9,11,9,9,6,6,4,4,2,3,1,2,3,4,5,5,6,6,7,6,8,7,8}, {7,8,7,8,7,6,6,5,4,4,5,5,6,7,8,7,8,7,7,5,6,4,4,4}, {5,4,5,6,7,9,9,10,10,9,8,9,7,7,6,6,4,4,2,3,2,2,2,3}, {3,4,6,6,7,8,9,8,9,7,6,4,4,2,2,2,2,1,2,2,3,4,4,5}, {4,5,3,4,2,4,3,4,3,4,3,4,3,3,3,4,5,5,7,7,8,7,7,5}, {6,3,3,1,2,0,1,2,3,4,6,8,8,10,8,9,7,8,7,7,6,7,6,6}, {5,5,5,4,4,5,5,5,7,6,9,8,10,9,10,8,8,5,5,3,4,4,5,6}, {7,9,9,10,9,10,8,8,6,5,4,4,3,4,5,5,5,6,6,6,6,6,7,7}, {8,8,10,8,9,7,7,6,4,3,3,2,2,3,5,7,9,10,11,12,10,10,8,9}, {6,6,5,5,5,6,7,7,7,7,8,7,9,9,10,10,11,11,12,12,12,11,10,9}, {7,6,5,5,5,7,7,9,9,10,10,11,8,9,7,7,5,6,5,7,7,8,9,8}, {10,9,9,7,8,5,6,5,6,5,6,4,4,3,3,2,2,2,3,5,6,8,9,12}, {10,11,10,9,6,6,2,2,1,1,1,1,2,2,4,4,5,5,6,6,8,7,9,7}, {8,7,7,6,5,4,3,2,2,3,2,4,5,7,7,8,6,7,5,6,4,5,4,4}, {4,5,5,6,7,7,8,7,8,6,7,5,6,5,6,5,5,4,4,3,3,3,3,4}, {4,6,6,8,7,8,7,8,6,6,3,2,1,1,0,0,1,1,3,4,5,5,7,5}, {7,5,6,5,5,4,4,3,3,3,2,2,1,1,2,3,3,5,6,8,7,8,7,8}, {6,5,4,4,3,3,3,3,4,4,6,5,7,6,7,6,6,5,5,5,6,5,6,6}, {6,6,6,5,5,7,6,7,7,8,7,8,7,7,6,6,4,3,1,1,1,2,3,4}, {7,7,9,8,10,9,10,8,8,6,5,3,4,2,3,3,2,3,2,3,3,4,4,6}, {5,7,6,8,7,7,7,6,5,5,4,3,4,4,6,5,8,7,9,8,9,7,7,5}, {5,4,3,3,4,5,5,6,7,8,8,9,9,10,9,11,9,10,9,9,8,9,7,6}, {5,4,4,3,5,5,8,8,10,10,12,10,11,10,10,9,8,7,6,6,6,8,7,9}, {9,9,8,9,7,8,7,7,6,7,5,6,5,5,5,5,5,5,6,6,8,8,10,9}, {11,10,11,9,8,6,5,4,3,3,2,3,4,5,6,8,8,9,9,10,9,10,9,9}, {9,9,8,8,7,6,6,5,6,4,5,5,7,7,9,9,9,9,9,8,7,6,5,6}, {4,5,6,6,6,8,8,10,9,9,7,8,6,7,5,6,5,5,5,5,4,4,5,5}, {6,5,7,6,7,7,8,7,7,5,4,3,1,1,0,1,0,2,3,5,5,7,6,7}, {5,6,4,3,2,2,1,1,1,0,1,0,1,0,1,1,3,3,5,6,7,7,7,6}, {6,5,4,3,1,1,0,1,1,3,4,5,5,7,6,7,5,6,3,5,5,5,6,6}, {6,6,7,6,6,4,6,5,5,4,6,5,6,6,5,5,4,2,2,1,1,2,2,5}, {6,8,9,10,10,10,9,7,5,4,3,2,1,1,1,1,3,2,5,4,5,4,6,5}, {7,7,8,7,8,8,7,6,5,4,3,3,2,2,3,6,6,9,7,10,9,8,7,6}, {6,5,5,5,6,6,7,7,9,7,9,8,8,8,9,8,9,8,9,8,9,9,7,7}, {6,6,5,5,5,7,8,11,11,12,11,11,10,9,7,6,5,4,4,4,5,5,7,6}, {8,8,9,7,8,7,8,7,7,7,6,6,5,5,3,4,2,3,2,4,4,6,7,8}, {8,9,7,7,6,5,4,3,3,2,3,3,5,5,7,6,8,7,8,6,7,6,6,6}, {6,6,4,5,4,5,4,5,4,6,5,7,7,10,9,10,9,10,8,7,6,4,3,2}, {3,2,4,4,6,6,8,7,9,8,9,7,8,8,8,7,7,7,6,5,4,4,3,4}, {3,5,4,6,5,7,7,7,6,5,4,3,3,2,3,2,5,4,6,7,8,7,9,7}, {7,5,5,4,3,3,1,2,1,2,2,3,2,3,3,5,5,8,8,9,10,10,9,9}, {8,5,5,3,2,1,2,1,3,3,5,5,7,7,9,8,8,7,7,7,8,7,8,9}, {8,8,6,8,6,6,6,7,5,7,5,6,6,6,6,5,5,3,4,2,3,2,5,4}, {7,7,9,9,9,9,7,7,5,4,1,1,0,1,1,2,1,3,3,5,5,6,5,6}, {6,7,7,7,7,6,6,5,5,2,3,1,2,2,3,4,6,6,7,8,9,8,7,7}, {5,5,3,3,2,4,2,5,4,6,5,6,6,7,6,7,6,7,7,7,7,6,7,6}, {6,5,5,4,5,5,6,7,9,8,9,8,8,7,5,5,3,4,3,4,4,5,6,8}, {8,9,8,9,8,8,6,5,4,4,3,2,2,1,1,0,2,1,3,3,6,6,8,9}, {9,9,9,9,7,7,4,3,2,1,0,1,1,3,3,5,5,6,6,6,6,6,7,6}, {7,6,7,6,7,6,7,6,6,4,6,5,5,6,7,6,6,7,6,5,4,4,2,3}, {3,5,4,6,7,9,9,10,9,10,8,7,6,5,4,3,4,2,3,2,3,2,3,3}, {4,3,5,5,7,7,8,8,7,6,5,4,2,1,0,0,0,2,2,3,4,5,6,6}, {4,4,3,3,3,1,3,2,3,3,4,3,5,4,4,4,5,5,6,6,6,7,6,6}, {4,4,2,3,1,1,0,2,2,5,6,8,9,10,10,9,8,7,6,4,5,4,5,5}, {6,5,6,5,6,5,6,6,6,7,8,8,8,8,8,8,6,6,4,4,2,3,3,5}, {6,8,8,9,9,9,8,7,7,4,4,3,3,3,4,4,6,6,7,7,8,6,8,7}, {7,7,7,7,6,7,6,7,5,5,3,4,4,5,6,8,9,11,11,12,12,11,10,8}, {8,6,5,4,5,4,6,5,7,7,8,8,9,8,9,9,9,10,9,10,9,10,8,9}, {7,7,5,6,5,7,7,8,9,9,10,8,8,7,7,5,5,4,5,5,7,7,8,9}, {10,9,10,9,8,8,7,7,4,5,3,3,2,2,2,2,0,2,2,4,5,6,7,8}, {9,8,8,6,6,3,3,1,2,0,1,0,1,2,4,4,5,5,5,5,5,5,4,5}, {4,5,5,5,4,4,3,5,4,5,4,6,6,7,7,7,6,6,5,4,3,2,3,1}, {3,2,4,4,5,7,7,8,8,7,6,6,4,4,4,3,2,3,1,3,2,3,2,3}, {3,4,4,4,5,5,6,5,6,3,3,1,1,-1,0,0,1,2,4,4,6,7,7,7}, {6,6,4,4,2,2,1,1,0,2,1,1,1,2,3,4,4,5,5,6,7,8,8,7}, {8,5,6,3,3,2,3,2,3,3,5,5,6,6,6,7,5,5,4,5,4,5,4,6}, {5,7,6,8,7,8,8,8,7,6,7,5,6,5,6,3,4,2,2,1,1,1,3,4}, {5,7,8,9,9,10,9,9,6,6,4,3,1,1,1,2,2,3,4,5,4,5,5,5}, {5,4,5,4,5,5,6,5,5,4,5,4,5,4,5,6,7,7,8,8,8,8,7,6}, {4,3,1,3,2,3,4,5,7,8,9,10,10,10,10,9,9,7,9,7,8,6,7,5}, {5,4,4,4,4,4,6,7,7,9,9,10,9,9,8,8,6,6,4,5,5,7,7,8}, {8,8,8,8,7,6,5,4,4,3,4,3,4,4,5,5,6,5,6,7,8,8,8,10}, {9,10,8,8,5,4,2,2,0,0,0,1,2,4,6,8,9,9,9,8,9,7,8,6}, {7,5,6,4,5,4,5,4,4,4,4,5,5,7,7,8,8,9,8,8,7,7,5,6}, {4,5,4,5,6,8,8,8,8,7,6,4,4,2,3,2,2,2,3,2,4,4,4,4}, {4,4,4,5,4,5,4,5,3,3,1,0,-2,-2,-3,-2,-2,0,1,2,4,5,6,5}, {6,4,5,2,2,0,1,0,1,0,1,1,1,1,1,1,1,2,3,4,4,5,5,6}, {4,5,3,2,0,1,0,1,1,2,3,4,6,5,6,5,4,2,3,1,2,1,3,2}, {4,4,5,5,6,6,6,6,5,6,5,6,4,5,4,4,3,2,0,0,0,1,1,3}, {5,6,7,8,8,8,8,6,6,3,3,0,1,0,1,1,2,3,4,4,5,5,5,5}, {4,6,5,6,5,6,4,5,4,3,3,3,2,3,4,5,7,7,8,9,9,8,8,6}, {6,4,4,3,4,4,5,6,7,7,8,9,8,8,7,8,6,7,7,8,7,7,7,8}, {6,6,6,6,7,7,8,9,9,8,9,7,8,6,6,3,4,1,2,2,3,4,6,7}, {8,9,8,9,8,8,6,7,5,5,4,3,2,3,2,1,2,2,3,3,4,5,7,7}, {8,7,8,6,6,5,4,3,3,2,3,3,4,4,5,6,5,6,5,6,5,5,4,5}, {3,4,3,4,4,4,5,4,6,5,7,7,8,7,9,8,8,6,6,4,4,2,2,1}, {1,2,3,3,4,6,7,9,7,9,7,8,6,6,5,5,4,4,3,3,3,3,3,3}, {4,4,4,3,4,3,4,4,4,3,4,2,2,1,2,2,3,4,5,6,7,8,7,7}, {6,6,3,3,0,0,0,0,0,1,1,2,3,4,5,6,7,7,9,8,10,8,10,8}, {8,5,5,3,3,2,2,2,2,4,4,5,6,8,8,9,7,7,6,7,5,6,6,6}, {6,6,7,7,7,7,7,6,6,5,5,3,5,3,5,3,4,3,3,2,3,3,4,6}, {6,8,8,9,9,10,8,8,6,5,2,1,-1,0,-1,0,2,3,4,5,6,6,6,5}, {6,4,5,4,5,4,4,4,3,3,3,2,2,3,2,4,4,6,5,7,7,8,6,6}, {4,3,1,2,2,2,4,4,7,6,8,8,9,8,8,6,7,4,5,4,5,5,5,5}, {4,5,4,4,4,5,5,7,6,9,8,8,6,6,4,4,2,2,1,1,2,2,4,5}, {7,7,8,6,7,5,5,3,4,2,2,2,2,1,2,2,2,3,3,4,3,5,5,7}, {6,8,6,7,5,5,3,2,1,0,0,1,3,4,5,5,7,7,7,6,6,4,5,4}, {4,4,4,4,4,5,5,5,5,6,5,6,6,7,7,7,6,7,5,5,4,4,3,2}, {3,2,3,4,6,6,9,8,9,7,7,5,5,3,3,2,2,1,3,3,2,4,3,4}, {4,4,3,5,4,5,5,5,5,5,3,2,1,0,-1,-1,0,1,3,4,6,6,7,5}, {6,4,3,2,1,1,0,0,1,2,2,3,3,4,4,4,3,5,4,6,5,6,6,6}, {5,5,3,2,2,1,2,2,3,3,6,6,8,8,8,7,7,5,4,3,3,2,3,4}, {4,5,5,6,5,7,6,7,6,7,5,6,5,6,5,5,5,4,3,2,2,2,3,3}, {6,5,8,7,8,7,7,6,5,3,3,2,2,2,2,4,5,7,7,8,7,8,7,7}, {6,6,4,5,4,4,4,3,3,2,3,2,4,4,6,7,9,9,11,10,11,10,10,8}, {6,4,4,3,2,3,3,5,4,7,6,8,8,8,8,9,8,8,7,8,9,9,9,9}, {9,8,8,6,7,6,7,6,7,6,6,5,5,4,3,3,2,2,2,3,3,6,6,8}, {7,9,8,8,7,6,4,4,2,1,0,0,-1,-1,0,-1,0,0,3,3,5,5,6,6}, {7,6,7,5,5,4,3,2,1,1,0,1,0,2,2,4,4,5,3,4,3,4,3,3}, {3,3,3,3,3,3,5,4,6,4,5,4,5,4,5,4,4,3,2,2,1,1,0,1}, {0,1,1,3,4,5,5,8,7,7,6,6,3,2,2,1,0,0,0,1,1,1,2,2}, {3,2,3,3,4,3,4,3,3,2,1,1,0,0,-1,0,-1,1,1,3,4,6,5,7}, {5,5,3,2,1,0,1,0,0,-1,1,1,3,3,5,4,5,4,5,5,5,5,6,6}, {5,5,4,4,3,3,2,3,3,5,5,6,6,8,7,7,6,6,4,3,3,3,3,3}, {5,4,6,6,9,8,9,8,9,7,7,5,5,4,3,4,3,3,2,2,1,3,2,3}, {3,6,5,8,8,9,8,8,6,5,4,2,2,1,2,1,3,3,6,5,7,6,7,5}, {4,4,4,3,4,4,4,5,4,6,5,6,5,6,5,7,7,8,8,9,7,8,8,6}, {5,3,2,1,2,2,4,5,7,8,10,10,10,10,10,9,8,7,6,6,5,6,5,6}, {5,6,5,5,5,6,5,7,7,8,8,8,8,7,6,5,5,4,4,3,4,4,6,6}, {8,7,9,7,7,6,4,4,2,2,2,2,2,3,3,4,4,5,4,6,5,7,7,7}, {7,7,7,5,5,4,4,2,2,0,0,1,3,4,6,8,9,8,9,8,8,7,6,6}, {5,5,4,5,3,5,3,5,4,5,4,5,4,6,5,6,7,7,6,6,5,4,4,2}, {3,2,3,3,5,5,7,6,6,5,5,3,2,1,0,0,0,2,1,3,3,5,4,6}, {4,5,4,5,4,4,3,4,3,2,1,0,-1,-3,-2,-3,-1,-1,2,3,6,6,7,7}, {6,5,3,2,1,0,-1,0,-1,0,-1,0,1,2,2,2,1,2,2,3,3,4,5,4}, {5,4,4,2,2,1,2,2,3,3,5,4,6,6,6,5,5,3,2,1,0,1,1,2}, {2,5,4,7,6,7,7,7,6,6,5,4,3,3,2,1,3,1,1,1,1,0,2,2}, {4,3,6,5,6,7,7,6,4,4,2,1,0,1,1,2,2,4,4,6,6,7,6,6}, {5,4,3,3,3,3,4,3,4,3,5,4,5,4,6,7,8,7,9,8,9,9,7,7}, {5,5,3,3,2,3,3,6,6,8,8,10,10,9,8,7,7,6,7,6,6,5,6,6}, {7,6,7,6,7,7,7,7,8,8,7,7,7,6,4,4,2,3,1,3,3,4,5,6}, {7,8,8,8,7,7,6,4,4,3,3,1,2,1,3,2,2,2,4,3,5,5,5,5}, {5,6,5,5,4,4,3,4,3,3,2,3,3,5,5,6,7,7,5,5,5,4,3,2}, {3,1,2,2,3,2,5,5,6,6,8,7,8,8,7,7,6,6,5,4,2,3,1,2}, {0,2,1,2,2,4,6,6,7,7,6,5,5,4,4,2,3,2,3,2,4,3,4,4}, {4,3,4,2,2,2,2,2,1,2,1,1,1,1,1,2,2,4,4,6,7,9,9,8}, {7,6,5,2,1,-1,0,-2,-1,-2,1,1,3,4,6,6,7,6,7,6,7,7,7,8}, {6,7,5,5,3,3,2,2,2,3,3,5,5,6,7,7,8,6,6,4,5,4,5,5}, {7,6,9,9,10,10,9,9,7,6,3,3,2,2,1,2,1,3,2,4,3,5,4,5}, {5,6,6,7,8,8,8,6,6,2,2,-1,-1,-2,-2,-2,1,1,4,5,7,7,7,6}, {5,5,3,4,3,3,4,5,4,5,3,5,3,3,4,4,4,5,6,6,7,6,7,5}, {6,4,4,1,2,2,3,4,6,6,8,7,7,7,6,5,4,4,2,3,2,3,3,4}, {5,5,4,6,5,6,6,6,7,6,6,5,6,4,4,2,1,-1,1,-1,2,2,4,5}, {6,7,8,7,6,6,4,4,2,2,1,1,0,2,1,3,2,3,3,4,4,5,5,5}, {6,5,6,4,5,3,4,2,2,1,1,1,3,4,6,7,7,7,6,7,5,5,3,4}, {2,3,2,4,3,5,5,7,6,6,7,7,6,7,7,7,6,6,6,4,5,3,3,2}, {3,2,3,4,5,7,8,8,8,9,6,6,4,3,2,2,0,1,1,3,3,4,4,5}, {4,5,4,3,4,3,4,3,4,3,4,2,2,1,1,0,1,1,3,4,5,7,6,7}, {5,6,3,3,1,2,0,2,1,2,3,5,5,6,7,6,6,6,5,4,5,4,5,4}, {5,3,4,3,4,3,4,4,5,5,6,8,8,10,9,9,7,7,4,3,1,2,1,2}, {2,3,4,6,7,8,8,8,9,7,7,6,6,5,6,4,6,4,5,3,4,3,3,4}, {4,4,4,5,5,5,5,5,4,5,2,3,2,3,3,5,5,7,8,9,9,9,8,7}, {7,4,4,1,2,1,2,1,3,2,4,5,6,6,9,9,10,10,11,11,11,11,10,10}, {7,7,4,4,2,3,3,4,5,6,7,8,8,7,9,7,8,6,7,6,7,7,8,7}, {8,7,7,6,7,7,6,5,5,5,3,4,3,2,1,1,1,1,1,2,3,5,6,7}, {9,9,9,8,8,6,7,3,3,1,1,-1,-1,-2,-1,-1,1,2,3,4,4,5,5,6}, {5,6,5,6,4,4,3,3,2,1,1,1,0,2,2,3,4,4,4,4,4,3,3,1}, {2,1,2,2,3,4,5,6,6,6,6,6,5,5,4,4,2,3,1,2,0,2,1,1}, {1,0,2,2,3,4,6,6,8,6,6,4,3,1,1,-1,0,-1,0,0,1,2,3,4}, {3,4,2,2,1,2,0,1,0,1,0,1,0,1,0,0,1,1,2,3,5,5,7,5}, {7,4,5,2,2,0,-1,-2,-1,-1,1,2,3,4,5,6,5,6,5,6,5,6,5,5}, {4,5,4,5,4,4,4,4,4,4,6,6,7,7,8,7,7,5,5,4,4,2,3,3}, {4,5,6,8,9,10,10,10,8,8,5,5,3,3,2,3,3,4,4,4,4,4,4,4}, {5,5,7,7,8,7,9,7,7,5,4,2,2,1,2,3,4,5,6,7,8,8,7,8}, {6,6,3,3,3,4,4,5,5,6,6,7,6,7,7,7,8,7,9,7,9,8,8,6}, {6,4,3,2,3,4,4,6,7,9,9,10,10,10,9,9,7,6,5,5,4,5,5,5}, {6,6,6,6,7,5,7,6,8,7,8,6,7,6,5,4,4,2,2,2,2,4,5,6}, {6,7,7,7,5,5,3,4,2,2,1,2,2,3,4,5,5,6,7,6,7,6,7,6}, {6,5,5,4,4,3,2,2,1,1,1,2,3,5,6,8,8,9,8,9,7,7,5,5}, {2,2,1,1,2,3,4,5,5,5,5,5,6,5,6,6,7,6,6,5,5,5,5,4}, {4,4,3,4,4,7,6,8,6,7,4,4,1,1,-1,0,-1,0,1,3,4,5,7,6}, {7,6,6,4,5,2,2,1,2,0,1,-1,-2,-2,-2,-2,-1,0,1,4,4,6,6,8}, {6,7,5,4,3,2,1,1,1,1,1,3,3,3,4,3,4,2,4,2,3,3,5,4}, {5,5,6,5,5,5,6,6,6,7,6,6,5,7,5,5,4,4,1,1,-1,0,0,1}, {2,4,5,6,8,8,10,9,10,7,7,5,4,3,3,2,2,2,2,1,2,3,3,4}, {3,6,4,6,5,7,6,6,6,5,4,4,3,2,2,3,4,5,6,6,8,7,8,6}, {6,4,4,2,3,3,3,4,4,5,5,7,7,8,8,9,8,9,8,9,8,8,8,8}, {6,6,5,3,4,3,5,5,7,7,10,9,10,10,10,8,8,6,6,5,6,5,6,7}, {7,8,7,8,7,8,8,8,6,7,5,6,5,5,4,4,3,3,3,3,4,4,6,6}, {8,8,9,8,9,7,6,5,4,2,2,1,2,1,2,4,3,5,5,6,5,7,5,7}, {5,5,4,6,5,5,5,4,4,4,4,3,5,6,7,6,8,7,8,6,6,5,5,3}, {2,2,1,2,2,4,5,7,7,9,8,9,8,8,6,7,6,5,4,5,4,4,3,2}, {2,1,3,2,4,4,7,6,8,7,8,6,6,4,3,2,2,2,3,3,4,6,5,7}, {5,5,3,4,2,1,1,1,1,1,1,2,3,3,4,3,4,4,6,5,8,7,8,7}, {7,6,5,3,2,0,-1,0,-1,0,1,3,5,8,8,10,9,10,7,8,7,7,6,7}, {6,7,6,5,6,4,6,4,6,4,6,5,6,7,8,8,8,7,6,5,5,4,3,4}, {4,6,5,9,7,9,8,8,7,6,3,3,2,1,1,1,3,3,5,4,5,5,6,5}, {6,5,7,6,7,6,6,6,5,4,2,1,1,0,0,1,2,5,5,8,8,10,9,9}, {7,6,4,4,3,2,4,4,4,4,5,4,5,4,5,4,5,5,6,5,7,7,7,7}, {6,5,4,4,3,4,4,6,6,9,8,9,7,8,7,5,4,3,2,2,2,3,4,4}, {6,5,7,6,8,7,8,7,7,6,7,4,5,4,2,2,0,0,0,1,1,3,3,5}, {5,7,6,8,6,6,5,4,3,1,1,1,1,1,3,3,4,4,4,4,5,4,4,4}, {5,4,4,3,3,4,4,4,3,4,3,4,4,6,6,8,7,8,6,7,5,5,4,3}, {3,1,2,2,3,3,6,6,8,7,9,7,8,7,7,6,6,6,5,5,4,4,3,4}, {3,4,3,5,4,6,6,7,7,7,6,5,3,2,1,1,2,1,3,3,5,5,7,6}, {7,5,6,4,4,3,3,3,2,2,1,2,1,2,2,2,2,4,4,6,7,8,7,8}, {8,7,5,5,3,2,2,2,2,2,4,3,6,5,8,7,8,7,6,5,5,5,5,5}, {4,5,5,6,6,7,6,8,6,9,7,8,7,8,7,8,8,6,6,4,4,3,3,2}, {4,3,6,6,9,9,10,9,9,8,7,6,5,4,3,3,3,4,4,6,5,6,5,6}, {5,5,4,4,4,5,5,5,5,5,4,4,4,3,5,5,7,7,9,9,11,10,10,10}, {8,6,4,4,1,2,1,3,3,4,4,6,7,9,8,10,9,10,8,9,9,9,9,7}, {8,5,5,3,3,2,4,4,5,5,8,8,9,8,8,7,7,6,5,5,5,5,5,7}, {7,9,8,9,9,9,8,7,6,6,4,3,3,3,3,2,2,2,3,2,4,4,7,6}, {8,8,9,8,7,7,5,4,3,2,0,0,-1,0,0,2,2,4,4,6,5,5,5,5}, {5,4,4,4,5,4,5,4,5,4,5,3,4,4,6,5,6,6,6,5,4,4,3,3}, {1,3,1,3,2,5,5,8,8,9,8,8,6,5,5,4,3,3,2,2,2,1,2,1}, {3,1,2,3,4,5,6,6,7,7,7,5,4,3,1,0,-1,0,0,1,1,4,5,5}, {5,5,4,3,3,2,2,1,2,1,3,2,3,3,3,3,4,3,3,4,5,5,6,7}, {5,6,4,4,2,3,1,2,1,3,3,5,6,8,8,10,8,8,6,5,4,4,4,4}, {5,4,6,5,6,6,8,7,8,7,8,8,9,9,9,9,8,8,6,6,4,4,2,3}, {3,6,6,8,9,10,11,10,10,9,8,6,6,4,4,4,6,5,7,6,8,6,7,6}, {7,6,6,5,6,7,7,7,6,7,5,5,4,4,4,6,6,8,8,10,10,11,10,9}, {8,6,6,3,4,3,4,4,6,6,8,8,9,9,9,9,9,9,9,9,9,10,8,8}, {7,7,5,6,4,5,5,7,8,10,10,10,10,10,10,8,8,6,6,5,5,5,6,6}, {7,7,8,7,8,7,7,7,6,7,6,6,5,6,4,4,3,4,3,5,5,6,6,8}, {7,8,7,7,6,5,5,3,2,1,2,0,2,2,4,4,6,6,7,7,7,7,6,6}, {4,5,3,3,2,3,1,3,1,3,2,3,4,5,6,8,9,9,9,9,8,6,6,5}, {4,3,3,2,4,4,6,5,7,7,7,7,6,6,5,6,4,5,5,6,5,6,5,6}, {5,5,4,5,5,5,5,5,5,4,4,2,1,0,0,-1,0,0,2,2,5,5,7,7}, {7,8,6,6,4,3,2,3,1,1,0,1,0,0,0,1,2,3,3,5,5,7,8,7}, {8,7,7,5,5,3,3,1,3,2,3,3,4,5,6,6,6,5,5,4,4,4,3,5}, {3,5,5,6,6,8,8,9,8,8,8,7,7,6,6,6,5,4,4,2,3,1,2,1}, {3,3,6,6,8,9,10,11,10,10,8,7,4,4,2,3,2,2,2,4,4,6,5,5}, {5,4,5,4,5,5,6,5,6,4,5,4,5,4,4,4,6,6,7,7,8,8,8,8}, {7,6,3,3,2,3,2,4,4,6,7,8,9,9,9,10,9,8,9,8,7,6,7,6}, {6,5,6,5,5,5,5,6,7,9,9,10,10,11,9,9,6,7,4,6,4,5,4,6}, {6,8,8,9,9,9,9,8,8,6,6,5,5,4,5,3,4,3,4,3,4,4,5,6}, {7,8,7,8,7,8,6,7,4,4,2,3,2,3,3,5,6,7,8,7,8,6,6,5}, {6,4,4,3,5,4,5,5,6,6,6,6,6,6,7,8,8,9,7,8,7,7,4,4}, {2,2,1,2,3,5,6,8,10,10,10,9,9,8,7,6,6,4,5,5,5,4,5,4}, {4,3,4,4,3,5,5,7,6,7,6,6,5,4,2,2,1,2,2,4,5,6,8,8}, {8,6,6,4,3,1,2,0,1,0,2,2,4,3,4,4,5,6,6,6,7,8,8,9}, {8,9,6,6,3,3,2,1,1,2,2,4,6,6,8,8,9,8,8,6,7,4,5,4}, {5,5,7,5,6,6,6,6,6,7,6,6,5,6,5,7,6,7,5,5,4,4,3,4}, {5,5,7,8,10,9,11,10,10,7,6,3,3,2,2,1,3,2,5,5,6,7,7,8}, {7,7,6,7,5,6,5,6,5,5,3,3,1,2,2,3,3,5,6,7,8,9,9,8}, {9,6,7,4,4,3,4,4,5,6,7,7,8,8,7,7,7,7,6,6,6,7,6,8}, {6,7,5,6,6,7,7,7,9,9,10,9,10,8,7,5,5,3,3,1,2,2,4,4}, {6,6,7,8,8,9,8,9,7,8,6,6,4,4,3,3,1,2,1,1,2,3,4,4}, {6,6,7,6,6,5,6,4,5,3,4,3,4,3,4,5,5,7,6,6,5,5,4,4}, {2,3,2,3,2,3,3,4,5,6,6,6,7,8,9,9,10,8,9,7,7,5,4,2}, {2,0,1,1,2,3,5,7,8,10,9,10,9,9,7,7,5,7,4,5,4,5,4,4}, {4,4,4,4,5,5,6,6,6,5,6,4,5,4,3,3,3,3,4,4,5,7,7,9}, {7,7,5,6,4,4,2,2,1,2,2,3,3,3,4,5,6,6,7,7,7,7,8,7}, {8,7,7,5,5,4,5,3,4,4,5,6,7,8,9,10,9,10,8,8,5,6,5,5}, {4,5,5,6,6,8,10,9,10,9,10,8,9,8,8,7,8,6,7,5,6,4,4,4}, {4,4,4,6,7,9,9,11,9,9,7,8,5,5,3,4,4,5,5,6,8,8,9,7}, {8,6,6,4,4,3,4,4,4,4,5,4,5,5,5,6,6,8,8,9,9,10,9,9}, {7,6,4,3,1,1,1,2,2,3,5,6,8,9,10,9,9,8,9,8,9,7,9,8}, {8,7,7,6,6,6,6,6,6,7,7,8,7,8,7,7,6,5,4,4,4,5,6,7}, {8,8,9,9,9,8,8,6,5,3,2,1,0,0,1,1,2,2,2,3,3,4,5,7}, {7,8,7,8,7,7,6,5,3,2,0,-1,-1,0,1,2,4,5,6,6,6,6,6,5}, {5,4,5,4,5,5,5,5,5,4,4,5,3,4,4,5,4,5,5,5,5,4,4,3}, {3,2,2,2,4,4,7,7,10,8,10,7,7,5,4,2,3,1,2,2,2,2,3,4}, {3,4,4,4,4,5,5,7,5,7,5,5,3,2,1,-1,-1,-1,0,0,3,4,6,5}, {7,5,7,4,4,2,2,1,2,2,3,2,3,4,4,4,4,4,3,5,3,5,5,6}, {5,6,4,5,4,4,4,3,4,4,6,7,8,8,10,10,10,9,9,6,5,4,4,3}, {3,4,5,5,6,8,9,10,9,11,10,10,9,9,9,9,8,8,7,6,5,4,4,3}, {4,4,6,6,8,8,10,10,10,9,9,7,6,5,4,5,5,6,7,7,8,9,8,9}, {7,7,5,6,5,5,5,5,6,6,5,5,6,6,6,7,8,8,10,10,12,11,11,9}, {9,7,6,4,4,3,3,5,5,7,8,10,9,11,10,10,9,10,9,8,8,8,7,8}, {7,6,7,6,7,6,8,8,10,9,11,9,10,9,9,8,7,6,5,4,4,5,5,6}, {6,8,8,9,7,9,7,8,7,6,6,5,4,4,3,3,3,3,4,3,4,4,6,5}, {6,5,6,5,6,4,5,3,3,2,2,3,3,4,4,6,6,7,6,8,7,7,6,6}, {4,4,2,3,3,2,4,4,5,5,5,5,7,6,8,7,8,8,7,7,6,6,4,4}, {2,2,1,2,1,3,3,5,5,7,6,7,5,6,5,4,3,4,3,3,3,3,4,4}, {5,4,6,4,5,4,4,4,4,4,4,2,2,1,1,1,0,1,1,3,4,6,7,9}, {7,8,7,7,4,4,2,1,0,-1,0,0,0,1,2,3,4,4,5,4,6,5,7,6}, {7,6,7,6,6,5,5,5,4,5,4,5,5,6,7,8,7,8,5,6,4,3,3,3}, {4,4,6,5,8,8,11,11,11,10,11,7,8,6,5,4,4,3,3,3,3,4,3,4}, {3,5,4,7,7,9,9,10,9,9,8,7,5,3,2,1,2,1,3,3,6,6,7,7}, {7,5,5,4,5,4,4,5,5,5,5,6,5,6,5,7,6,6,6,7,7,8,8,8}, {6,6,4,3,3,2,3,3,5,6,8,8,11,11,11,10,10,8,7,6,7,6,6,6}, {5,6,5,5,5,5,6,7,7,9,9,11,9,10,9,8,7,6,5,3,3,3,4,4}, {7,6,9,7,9,8,8,6,6,5,5,4,4,4,4,5,4,6,4,6,5,6,5,6}, {6,7,5,6,5,6,5,4,4,2,2,1,3,3,5,6,8,8,9,9,9,8,7,6}, {5,4,3,2,3,3,4,5,5,7,6,8,6,8,8,9,8,9,8,9,8,7,6,5}, {4,2,3,1,3,3,6,7,9,9,10,8,7,7,5,5,4,4,3,4,5,6,5,6}, {5,6,4,5,4,5,4,5,4,4,5,5,4,3,3,1,1,0,2,3,6,6,9,8}, {9,7,7,5,4,3,2,1,0,0,0,1,2,4,4,5,5,6,4,6,4,6,6,6}, {6,5,5,3,3,2,3,2,3,2,4,4,6,6,8,8,9,8,7,5,5,4,2,3}, {2,4,4,5,6,8,7,10,8,9,8,8,6,6,6,5,5,5,5,3,4,3,4,3}, {4,4,6,6,7,7,8,8,7,6,5,3,2,1,0,1,1,3,3,5,5,7,7,8}, {7,7,5,4,4,3,4,4,4,3,4,3,4,3,4,4,6,6,7,8,8,9,9,9}, {8,8,5,6,4,4,3,5,4,6,6,8,7,8,7,7,7,6,6,5,5,5,6,5}, {6,6,7,6,8,7,8,8,9,9,9,7,7,6,5,4,3,2,1,1,1,2,2,4}, {4,7,7,9,9,9,9,8,7,5,5,3,3,1,1,1,1,0,2,1,3,2,4,3}, {5,5,5,5,5,6,5,5,4,4,2,3,2,4,3,5,5,6,5,6,5,5,4,2}, {2,1,1,1,2,1,4,4,6,6,8,8,8,7,8,8,8,7,6,5,5,4,2,3}, {1,2,0,2,1,3,5,7,8,10,10,10,9,8,6,5,4,3,3,3,4,3,4,3}, {5,4,5,4,5,4,4,5,4,5,4,4,4,4,2,3,2,3,3,4,4,7,7,7}, {8,8,6,6,4,3,3,1,2,0,2,1,4,4,6,7,8,7,8,8,7,7,6,7}, {6,7,6,6,5,6,4,6,4,6,5,7,7,9,9,10,10,10,9,8,7,5,5,3}, {4,3,6,4,7,8,10,10,11,10,10,10,9,8,7,7,6,7,6,7,6,7,6,6}, {5,6,5,6,6,8,8,8,9,8,7,5,5,3,4,1,4,3,6,6,8,8,9,8}, {8,7,5,4,3,3,2,3,3,4,3,5,5,6,6,7,6,8,8,9,9,9,9,8}, {8,6,6,4,4,2,3,2,4,5,7,8,9,9,9,8,8,7,6,6,5,5,5,5}, {5,6,5,6,5,6,5,6,6,7,7,6,7,7,6,5,5,2,3,1,2,1,2,3}, {5,6,7,7,8,8,7,7,5,5,2,2,1,1,1,2,2,3,3,4,3,4,4,5}, {5,4,4,4,5,4,5,3,3,2,2,0,2,1,3,3,5,6,6,6,6,5,4,4}, {2,2,1,2,1,3,3,5,5,6,6,7,6,6,6,6,6,6,6,6,5,3,4,2}, {3,1,2,1,3,3,6,8,8,9,9,9,6,6,4,3,1,1,0,2,2,3,3,5}, {4,5,4,4,4,4,4,4,5,4,5,3,4,2,2,0,0,-1,0,1,3,4,6,6}, {6,7,5,6,3,3,2,3,1,2,1,3,3,5,5,6,6,6,5,5,5,4,4,4}, {5,4,5,3,5,4,5,4,5,5,8,7,9,9,8,9,9,9,7,6,4,4,2,2}, {1,3,2,5,5,8,8,9,10,10,11,10,9,8,8,6,6,5,5,4,5,4,5,4}, {4,4,5,5,6,7,6,8,7,8,6,6,4,4,4,5,4,5,5,7,8,9,9,8}, {8,6,6,4,3,2,3,3,4,3,4,4,5,5,6,7,8,8,9,9,10,9,9,10}, {8,8,6,5,3,4,3,4,4,6,7,9,9,10,10,10,10,9,9,7,7,7,7,5}, {7,6,7,6,7,7,7,8,7,8,7,8,6,7,5,6,4,4,3,4,3,4,4,5}, {5,6,7,7,7,7,7,6,6,4,4,2,2,1,1,2,3,2,3,4,5,5,5,6}, {5,6,4,5,4,4,3,3,2,2,1,1,1,2,2,4,5,6,6,6,6,5,5,3}, {3,1,1,0,0,0,2,2,3,4,5,5,5,5,4,5,4,5,4,5,3,4,3,3}, {1,1,0,2,1,3,4,5,6,6,7,6,5,4,4,1,1,0,0,0,2,2,4,4}, {5,5,5,5,4,4,2,3,1,3,0,1,-1,0,0,0,-1,0,0,1,2,3,5,5}, {7,5,7,5,5,3,3,1,1,0,1,0,2,2,4,5,5,6,5,5,4,5,3,4}, {3,5,4,6,5,6,5,7,6,6,6,7,6,6,7,7,8,6,7,5,5,2,3,1}, {1,2,3,4,6,9,10,12,11,11,9,9,7,6,4,4,3,3,3,4,3,4,3,3}, {4,3,5,5,5,6,8,7,9,8,8,6,5,2,3,2,2,2,3,4,5,7,7,8}, {6,6,4,4,2,3,2,3,4,5,5,7,6,6,6,6,7,6,6,6,6,6,7,5}, {6,4,4,3,3,1,3,4,4,6,7,9,10,11,9,10,7,7,5,5,3,4,3,3}, {4,5,5,5,6,6,7,7,8,8,8,7,9,8,8,6,5,4,3,2,2,1,2,3}, {4,6,5,7,7,8,6,6,4,5,3,3,1,3,2,4,4,5,5,4,5,4,5,4}, {5,3,5,4,4,4,4,4,3,3,3,2,3,4,5,7,8,9,8,9,8,8,6,5}, {3,3,1,1,1,2,3,4,5,6,7,7,8,7,8,7,8,7,8,7,7,5,6,4}, {4,3,2,2,2,4,5,7,7,9,7,8,7,6,4,4,3,2,2,3,4,5,6,6}, {7,6,6,5,5,3,4,3,4,2,3,1,2,1,2,0,1,1,2,3,4,5,6,7}, {6,7,5,6,3,2,1,0,-1,0,0,1,2,3,5,5,6,5,6,5,5,3,4,3}, {4,3,4,4,5,4,4,5,5,6,6,6,6,7,6,7,7,7,6,6,4,3,2,2}, {2,1,2,3,4,6,7,7,9,8,8,6,6,4,4,3,3,2,3,3,3,3,4,4}, {3,5,4,5,4,5,4,6,5,6,4,4,3,2,1,2,2,3,4,5,7,7,8,7}, {8,6,6,3,4,2,2,1,3,3,3,3,4,4,5,5,5,7,7,8,6,7,7,8}, {7,7,4,4,4,3,4,4,5,5,7,7,8,8,9,8,8,6,6,5,4,3,4,4}, {5,5,5,6,7,9,8,10,8,10,7,7,6,5,5,5,3,2,1,1,1,1,2,2}, {4,5,6,5,7,7,8,7,7,5,4,3,2,1,1,1,2,2,2,3,3,3,3,4}, {2,3,1,3,2,4,4,4,4,4,4,4,4,4,5,4,5,6,6,5,6,3,3,2}, {1,-1,0,-2,-1,1,2,4,4,7,8,8,8,9,7,7,6,6,4,5,3,4,2,2}, {1,0,0,0,1,1,4,3,6,7,9,7,8,6,6,4,3,2,1,1,2,2,3,4}, {4,6,4,5,3,4,2,3,1,2,1,2,3,3,3,3,4,4,4,4,5,5,6,5}, {7,5,6,4,4,3,3,1,0,0,0,1,2,5,6,8,8,9,8,9,6,7,5,5}, {4,4,5,5,5,5,6,6,7,6,7,6,8,8,9,9,10,9,10,8,8,6,5,4}, {4,4,3,5,6,8,9,11,10,11,9,9,7,6,5,4,4,4,5,5,5,6,6,6}, {7,5,6,5,6,6,6,5,6,6,5,4,4,2,1,1,2,4,4,6,7,9,9,10}, {9,9,6,5,4,3,3,2,2,2,4,4,5,5,5,5,6,5,6,6,7,6,7,6}, {7,5,4,3,3,2,1,3,3,5,5,7,6,8,6,7,5,4,2,3,2,2,2,2}, {4,3,5,4,6,5,7,6,7,6,6,5,5,4,4,3,2,1,1,0,0,0,1,3}, {3,5,4,6,5,6,5,5,3,2,0,0,-1,-1,0,0,1,1,2,2,4,3,3,2}, {4,1,2,2,2,2,2,2,2,2,1,2,1,3,3,4,4,6,6,7,6,6,4,3}, {2,2,0,1,1,1,3,3,6,6,7,6,6,5,6,5,6,4,5,4,4,4,4,3}, {2,2,2,3,3,4,5,7,7,8,8,8,5,5,3,2,0,0,0,0,1,2,4,4}, {6,5,7,5,6,5,5,4,4,4,3,3,2,2,2,1,0,0,0,2,2,3,4,5}, {5,6,5,6,5,4,4,3,4,3,4,4,5,5,7,7,8,6,7,5,4,3,2,1}, {1,2,2,3,4,5,5,8,7,10,9,10,9,10,9,10,8,8,6,6,4,2,2,1}, {1,0,2,2,5,5,8,8,11,10,11,10,10,9,7,6,6,5,4,4,4,4,4,5}, {4,5,3,4,3,4,4,5,5,6,6,6,5,5,5,5,6,5,7,6,8,7,9,8}, {7,6,5,3,3,2,1,2,2,3,4,5,6,8,8,10,9,10,9,10,9,9,8,8}, {8,6,5,3,4,2,3,3,5,5,7,7,9,9,11,10,9,8,8,7,5,5,4,5}, {4,5,5,7,6,8,7,8,7,8,7,7,6,5,5,4,5,4,4,3,4,3,4,4}, {6,5,7,6,8,6,7,5,5,3,2,1,0,0,0,1,1,2,3,5,5,6,5,5}, {3,3,2,2,2,1,3,2,3,1,2,0,1,2,3,3,4,4,6,5,5,5,4,3}, {2,1,-1,-1,-1,1,1,4,4,6,6,7,6,6,5,4,3,3,3,2,2,2,2,2}, {2,1,1,0,2,2,3,3,5,5,5,5,5,3,2,1,-1,-1,-3,-1,-1,1,2,4}, {4,6,5,5,4,3,3,2,1,0,0,0,1,0,1,1,1,1,2,1,3,2,5,4}, {5,5,5,5,4,4,2,2,0,1,-1,2,1,3,4,6,6,8,6,7,5,5,4,3}, {3,3,3,3,4,4,6,6,7,6,7,7,7,6,7,8,8,7,7,6,5,5,3,3}, {2,3,3,5,6,8,9,10,11,10,9,8,6,5,4,2,3,3,3,3,5,5,6,5}, {7,5,6,5,6,5,6,6,6,6,5,5,4,3,2,2,1,3,3,5,5,7,7,7}, {7,7,5,4,4,2,3,2,4,3,6,5,7,6,7,6,7,6,6,5,6,6,5,6}, {4,5,3,4,2,4,3,5,5,8,8,10,9,10,9,9,7,6,4,3,2,1,2,1}, {3,2,4,4,6,6,7,8,8,7,8,7,7,7,6,5,4,4,1,2,1,2,1,3}, {2,4,3,5,5,6,6,5,5,3,4,2,3,2,4,4,5,5,6,6,6,5,5,4}, {3,2,1,1,1,1,1,2,2,4,3,4,4,5,6,8,8,9,9,8,8,7,6,4}, {4,0,0,-1,1,0,2,3,5,6,8,7,9,8,9,7,8,7,7,7,6,7,6,5}, {3,5,3,4,3,5,4,6,6,6,6,6,5,5,4,3,2,1,2,2,3,4,6,5}, {7,7,7,6,5,4,3,3,1,2,0,0,-1,1,0,2,1,3,2,3,3,5,5,6}, {7,6,7,5,6,5,5,2,3,2,2,2,3,3,4,5,6,6,6,5,4,4,3,3}, {2,3,2,4,3,5,5,7,6,8,8,9,7,6,6,5,5,4,4,3,3,2,2,1}, {1,1,2,3,4,6,7,9,10,10,9,8,7,6,3,3,1,1,0,2,2,4,4,5}, {5,6,4,4,4,4,5,4,6,4,5,3,4,2,3,2,3,2,3,4,5,6,7,7}, {7,7,4,4,2,2,1,3,2,3,3,5,5,7,7,8,7,7,7,6,6,5,6,5}, {7,4,6,5,5,4,6,5,6,6,7,7,9,9,9,9,7,6,4,4,3,3,2,3}, {3,5,4,7,8,9,9,9,9,8,7,6,5,4,4,2,3,2,3,1,2,2,2,3}, {4,4,5,6,6,7,7,7,5,5,3,3,1,1,1,1,1,3,3,4,4,4,4,3}, {3,2,2,2,2,2,3,3,5,5,5,4,5,4,5,5,5,6,6,6,5,5,4,3}, {1,1,-2,-1,-2,1,2,4,5,8,9,9,9,8,8,6,6,4,4,3,4,2,3,2}, {3,1,2,1,3,3,4,6,6,7,7,8,7,7,5,4,2,1,0,1,0,2,2,4}, {5,5,5,5,5,3,4,2,3,1,3,2,3,4,4,5,5,5,5,4,5,5,4,5}, {5,6,4,4,3,4,3,4,2,3,3,5,5,7,9,10,11,11,11,10,9,6,6,4}, {4,2,3,2,5,5,7,7,8,8,10,9,10,10,10,10,10,10,9,9,7,7,5,5}, {3,3,2,4,5,6,9,9,11,10,10,8,9,6,7,4,6,4,6,6,8,8,9,9}, {8,8,6,6,4,5,4,5,4,5,4,4,3,4,2,3,3,4,5,6,8,8,9,8}, {9,6,6,4,3,1,2,0,2,1,3,3,5,5,5,6,6,6,5,6,5,5,4,6}, {5,5,3,4,3,4,3,5,5,6,6,7,7,7,7,6,5,3,3,1,2,0,1,1}, {2,3,4,5,5,6,7,7,6,7,5,5,4,3,2,2,0,1,-1,-1,-1,0,0,1}, {2,3,4,4,4,4,5,4,5,3,2,0,1,0,1,1,2,2,3,3,4,3,3,4}, {2,2,1,1,0,1,1,2,2,3,3,4,4,5,5,5,6,6,6,6,6,5,4,3}, {2,0,0,-1,0,1,2,4,5,7,7,8,8,8,7,7,5,5,3,4,3,4,3,4}, {3,3,3,4,4,5,6,6,7,6,7,6,6,4,4,2,2,0,0,0,1,3,3,5}, {6,7,7,7,6,6,4,5,3,4,2,3,1,2,1,2,2,3,3,3,4,4,4,4}, {6,4,6,5,6,5,6,4,5,4,4,4,5,6,7,8,7,8,7,7,5,5,3,3}, {1,1,1,2,3,6,7,8,9,10,11,11,10,9,9,8,7,6,7,5,5,4,3,3}, {2,2,2,3,4,6,7,10,9,11,10,10,8,7,6,5,3,4,2,4,4,5,6,6}, {6,5,6,3,4,3,4,3,5,5,6,5,5,4,5,6,6,6,6,7,8,8,7,8}, {7,8,5,4,2,2,1,2,2,3,4,6,7,9,9,9,10,9,9,8,8,7,7,5}, {6,4,5,4,4,5,5,6,5,8,7,9,9,10,9,11,9,9,7,7,5,5,4,4}, {4,5,6,6,8,8,9,8,9,7,7,5,5,4,4,3,4,3,3,3,4,4,4,5}, {3,4,4,5,4,5,4,5,3,4,2,2,0,0,0,2,2,3,5,6,7,5,6,4}, {5,3,3,1,2,2,3,4,4,4,4,5,4,4,4,5,4,6,5,6,5,6,4,4}, {2,2,-1,0,0,0,2,3,5,6,8,7,8,6,5,3,3,1,2,0,2,2,2,3}, {3,3,2,3,3,4,4,6,5,7,6,6,4,5,3,3,0,0,-2,-1,-1,0,2,3}, {6,5,7,5,6,5,4,2,3,2,2,1,2,2,3,3,4,4,3,4,3,3,3,4}, {3,5,4,5,4,4,4,5,4,4,5,4,5,7,8,8,9,8,9,7,7,4,4,2}, {3,1,2,2,4,6,8,10,10,12,10,11,10,10,9,9,8,8,6,7,5,6,4,3}, {3,3,3,4,6,7,10,10,12,11,11,9,9,6,6,5,4,3,3,4,5,7,7,8}, {6,7,6,7,5,6,5,7,6,7,6,7,6,5,5,4,5,4,6,6,8,7,8,8}, {8,6,7,4,4,3,4,4,5,6,6,8,9,10,9,10,8,9,7,7,6,6,4,5}, {4,4,4,4,4,5,6,7,9,9,11,10,11,11,10,8,8,6,5,4,3,2,2,2}, {2,4,4,6,5,8,7,10,9,9,7,8,6,7,6,5,5,4,3,3,2,2,3,2}, {4,2,4,3,4,3,5,4,4,4,4,3,3,3,4,5,5,7,7,8,7,7,5,5}, {3,3,0,1,0,1,1,2,3,4,5,5,7,7,8,8,10,9,10,9,10,8,8,6}, {5,3,2,1,1,1,2,4,5,7,7,9,9,10,8,8,7,7,6,6,5,5,6,5}, {6,5,6,5,5,4,6,5,6,5,6,5,5,4,4,4,3,2,2,3,4,6,6,8}, {7,9,8,9,8,8,6,4,3,2,2,1,1,1,2,2,4,4,5,5,6,5,6,5}, {6,5,6,5,6,5,5,5,4,4,3,4,3,5,5,6,7,8,6,8,5,5,3,3}, {2,1,2,2,3,4,7,8,11,10,11,9,10,8,7,6,6,4,4,4,4,4,4,4}, {3,4,2,5,4,7,7,9,8,10,9,9,7,6,4,2,2,1,1,1,3,4,6,5}, {7,6,5,4,5,3,4,4,4,4,4,5,5,5,5,5,4,5,4,6,5,7,6,7}, {6,6,5,5,3,2,2,2,3,3,5,6,8,8,9,9,9,8,8,6,6,5,5,5}, {4,5,4,5,5,6,6,7,6,8,8,10,9,10,9,9,8,8,5,4,3,2,3,2}, {4,3,6,6,9,9,10,10,10,8,8,6,6,4,3,3,3,3,2,3,3,3,2,4}, {3,5,3,6,5,6,6,7,6,5,5,3,3,2,2,2,4,4,6,5,6,5,6,4}, {4,1,1,1,1,2,3,4,5,7,6,7,6,8,7,7,6,7,6,6,6,6,5,3}, {2,1,0,0,1,1,4,5,9,9,11,10,11,9,9,7,6,4,3,2,2,3,3,4}, {3,5,4,5,4,5,5,6,6,7,7,7,7,6,5,5,3,2,2,1,2,1,4,4}, {6,5,7,6,6,5,5,4,3,3,3,4,4,5,5,6,7,8,7,8,6,6,6,6}, {4,5,4,4,4,4,5,4,5,5,6,6,8,8,10,11,12,11,12,10,10,7,7,5}, {4,3,2,3,3,6,6,9,9,12,11,12,10,10,10,10,9,10,9,9,9,8,8,6}, {7,5,7,6,7,7,8,9,9,9,9,7,7,5,4,4,4,4,4,6,6,8,8,9}, {8,9,7,7,6,5,4,4,3,3,4,3,3,2,3,2,4,4,6,5,8,7,9,8}, {8,8,8,6,5,5,4,5,3,5,5,6,6,7,7,8,7,6,5,6,5,4,4,4}, {4,4,5,4,5,5,7,6,8,7,9,8,8,7,7,6,4,3,2,1,1,0,-1,1}, {1,3,3,5,6,8,8,9,9,8,7,6,5,4,3,1,1,0,1,0,1,1,2,1}, {3,1,3,3,4,4,5,5,4,5,4,4,3,3,3,3,3,5,5,6,5,5,4,3}, {2,1,0,-1,0,0,2,1,4,5,7,6,9,8,9,8,9,7,8,7,6,6,5,5}, {2,3,1,1,0,3,3,5,6,8,9,11,11,10,9,8,7,6,5,3,4,3,4,4}, {5,4,6,5,7,7,7,7,7,7,7,7,6,6,5,5,3,3,2,2,2,4,3,5}, {6,7,7,7,8,7,7,6,6,5,5,3,4,4,6,5,7,6,7,6,7,5,5,4}, {4,4,5,5,5,7,6,9,8,9,7,9,8,9,9,10,10,11,10,9,7,6,5,3}, {2,0,2,2,4,4,9,10,13,13,15,13,13,12,11,9,8,8,6,7,5,6,5,5}, {4,4,3,5,5,6,8,9,10,11,11,11,11,9,8,6,6,4,5,4,6,6,8,7}, {7,7,6,4,4,3,3,4,4,6,6,7,6,8,7,9,8,9,7,8,8,8,8,8}, {8,6,5,4,3,1,3,2,4,4,7,7,10,10,12,12,13,11,11,9,8,8,7,7}, {5,6,5,6,5,6,6,7,7,8,8,10,10,10,10,10,10,9,8,6,6,4,4,3}, {5,3,6,6,8,8,8,8,8,7,6,5,4,3,3,3,3,4,4,5,5,7,5,6}, {6,6,6,6,5,6,6,5,5,4,3,1,1,1,1,2,4,4,6,6,8,8,7,7}, {6,5,2,3,1,2,1,3,3,5,4,5,4,5,4,4,4,4,5,5,5,5,5,4}, {5,3,4,1,3,2,4,5,8,8,9,8,9,7,6,5,3,1,0,1,0,2,2,4}, {4,6,5,6,6,7,7,6,6,6,6,4,4,4,3,2,1,-1,0,-2,-1,0,2,3}, {4,6,6,6,7,6,5,6,4,5,3,4,3,4,4,6,5,6,5,5,4,5,4,3}, {4,2,4,3,5,4,6,6,8,6,9,7,10,8,10,10,10,10,9,9,8,6,5,4}, {1,3,2,3,3,6,7,10,11,13,12,13,12,12,11,10,9,8,7,6,7,6,6,5}, {6,4,5,5,7,8,9,9,10,11,10,10,8,8,6,6,4,5,5,6,6,8,8,8}}

local solar_term_chinese = {"冬至", "小寒", "大寒", "立春", "雨水", "驚蟄", "春分", "清明", "穀雨", "立夏", "小滿", "芒種", "夏至", "小暑", "大暑", "立秋", "處暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至", "小寒"}
local month_chinese = {"冬","臘","正","二","三","四","五","六","七","八","九","十"}
local day_chinese = {"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"}
local celestial_stems = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}
local terrestrial_branches = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}

local function getJD(yyyy,mm,dd)
  local m1 = mm
  local yy = yyyy
  if (m1 <= 2) then
    m1 = m1 + 12
    yy = yy - 1
  end
  -- Gregorian calendar
  local b = yy // 400 - yy // 100 + yy // 4
  local jd = 365*yy - 679004 + b + math.floor(30.6001*(m1+1)) + dd + 2400000.5
  return jd
end

-- UT -> TT
local function DeltaT(T)
  local y = T*100 + 2000 + 0.5/365.25
  local DT = 0
  if (y > 2150) then
    local u = 0.01*(y-1820)
    DT = -20 + 32*u*u
  elseif (y > 2050) then
    local u = 0.01*(y-1820)
    DT = -20 + 32*u*u - 0.5628*(2150 - y)
  elseif (y > 2022) then
    local u = y-2000
    -- DT = 62.92 + 0.32217*u + 0.005589*u*u;
    DT = 59.59 + 0.32217*u + 0.005589*u*u
  elseif (y > 2017.0020533881) then
    DT = 69.184
  elseif (y > 2015.4962354552) then
    DT = 68.184
  elseif (y > 2012.4982888433) then
    DT = 67.184
  elseif (y > 2009.0020533881) then
    DT = 66.184
  elseif (y > 2006.0013689254) then
    DT = 65.184
  elseif (y > 1999.0006844627) then
    DT = 64.184
  elseif (y > 1997.4976043806) then
    DT = 63.184
  elseif (y > 1996.0) then
    DT = 62.184
  elseif (y > 1994.4969199179) then
    DT = 61.184
  elseif (y > 1993.4976043806) then
    DT = 60.184
  elseif (y > 1992.4982888433) then
    DT = 59.184
  elseif (y > 1991.0006844627) then
    DT = 58.184
  elseif (y > 1990.0013689254) then
    DT = 57.184
  elseif (y > 1988.0) then
    DT = 56.184
  elseif (y > 1985.4976043806) then
    DT = 55.184
  elseif (y > 1983.4962354552) then
    DT = 54.184
  elseif (y > 1982.4969199179) then
    DT = 53.184
  elseif (y > 1981.4976043806) then
    DT = 52.184
  elseif (y > 1980.0) then
    DT = 51.184
  elseif (y > 1979.0006844627) then
    DT = 50.184
  elseif (y > 1978.0013689254) then
    DT = 49.184
  elseif (y > 1977.0020533881) then
    DT = 48.184
  elseif (y > 1976.0) then
    DT = 47.184
  elseif (y > 1975.0006844627) then
    DT = 46.184
  elseif (y > 1974.0013689254) then
    DT = 45.184
  elseif (y > 1973.0020533881) then
    DT = 44.184
  elseif (y > 1972.4982888433) then
    DT = 43.184
  elseif (y > 1972.0) then
    DT = 42.184
  elseif (y > 1961) then
    u = y-1975
    u2 = u*u
    u3 = u*u2
    DT = 45.45 + 1.067*u - u2/260 - u3/718
  elseif (y > 1941) then
    local u = y-1950
    local u2 = u*u
    local u3 = u*u2
    DT = 29.07 + 0.407*u - u2/233 + u3/2547
  elseif (y > 1920) then
    local u = y-1920
    local u2 = u*u
    local u3 = u2*u
    DT = 21.2 + 0.84493*u - 0.0761*u2 + 0.0020936*u3
  elseif (y > 1900) then
    local u = y-1900
    local u2=u*u
    local u3=u*u2
    local u4=u2*u2
    DT = -2.79 + 1.494119*u - 0.0598939*u2 + 0.0061966*u3 - 0.000197*u4
  end
  return DT/86400.0
end

local function mod2pi_de(x)
  return x - 2 * math.pi * math.floor(0.5 * x/math.pi + 0.5)
end

local function decode_solar_terms(y, istart, offset_comp, solar_comp)
  local jd0 = getJD(y-1,12,31) - 1.0/3
  local delta_T = DeltaT((jd0-2451545 + 365.25*0.5)/36525)
  local offset = 2451545 - jd0 - delta_T
  local w = {2*math.pi, 6.282886, 12.565772, 0.337563, 83.99505, 77.712164, 5.7533, 3.9301}
  local poly_coefs = {}
  local amp = {}
  local ph = {}
  if (y > 2500) then
    poly_coefs = {-10.60617210417765, 365.2421759265393, -2.701502510496315e-08, 2.303900971263569e-12}
    amp = {0.1736157870707964, 1.914572713893651, 0.0113716862045686, 0.004885711219368455, 0.0004032584498264633, 0.001736052092601642, 0.002035081600709588, 0.001360448706185977}
    ph = {-2.012792258215681, 2.824063083728992, -0.4826844382278376, 0.9488391363261893, 2.646697770061209, -0.2675341497460084, 0.9646288791219602, -1.808852094435626}
  elseif (y > 1500) then
    poly_coefs = {-10.6111079510509, 365.2421925947405, -3.888654930760874e-08, -5.434707919089998e-12}
    amp = {0.1633918030382493, 1.95409759473169, 0.01184405584067255, 0.004842563463555804, 0.0004137082581449113, 0.001732513547029885, 0.002025850272284684, 0.001363226024948773}
    ph = {-1.767045717746641, 2.832417615687159, -0.465176623256009, 0.9461667782644696, 2.713020913181211, -0.2031148059020781, 0.9980808019332812, -1.832536089597202}
  end

  local sterm = {}
  for i=1, #solar_comp do
    local Ls = (y - 2000) + (i-1 + istart)/24.0
    local s = poly_coefs[1] + offset + Ls*(poly_coefs[2] + Ls*(poly_coefs[3] + Ls*poly_coefs[4]))
    for j=1, 8 do
      local ang = mod2pi_de(w[j] * Ls) + ph[j]
      s = s + amp[j] * math.sin(ang)
    end
    local s1 = math.floor((s-math.floor(s))*1440 + 0.5)
    local datetime = s1 + 1441 * math.floor(s) + solar_comp[i] - offset_comp
    local day = datetime // 1441
    local hourminute = datetime - 1441 * day
    local hour = hourminute // 60
    local minute = hourminute - 60 * hour
    local the_date = os.time({year=y, month=1, day=day, hour=hour, min=minute})
    table.insert(sterm, the_date)
  end
  return sterm
end

local function decode_moon_phases(y, offset_comp, lunar_comp, dp)
  local w = {2*math.pi, 6.733776, 13.467552, 0.507989, 0.0273143, 0.507984, 20.201328, 6.225791, 7.24176, 5.32461, 12.058386, 0.901181, 5.832595, 12.56637061435917, 19.300146, 11.665189, 18.398965, 6.791174, 13.636974, 1.015968, 6.903198, 13.07437, 1.070354, 6.340578614359172}
  local poly_coefs = {}
  local amp = {}
  local ph = {}
  if (y > 2500) then
    poly_coefs = {5.093879710922470, 29.53058981687484, 2.670339910922144e-11, 1.807808217274283e-15}
    amp = {0.00306380948959271, 6.08567588841838, 0.3023856209133756, 0.07481389897992345, 0.0001587661348338354, 0.1740759063081489, 0.0004131985233772993, 0.005796584475300004, 0.008268929076163079, 0.003256244384807976, 0.000520983165608148, 0.003742624708965854, 1.709506053530008, 28216.70389751519, 1.598844831045378, 0.314745599206173, 6.602993931108911, 0.0003387269181720862, 0.009226112317341887, 0.00196073145843697, 0.001457643607929487, 6.467401779992282e-05, 0.0007716739483064076, 0.001378880922256705}
    ph = {-0.0001879456766404132, -2.745704167588171, -2.348884895288619, 1.420037528559222, -2.393586904955103, -0.3914194006325855, 1.183088056748942, -2.782692143601458, 0.4430565056744425, -0.4357413971405519, -3.081209195003025, 0.7945051912707899, -0.4010911170136437, 3.003035462639878e-10, 0.4040070684461441, 2.351831380989509, 2.748612213507844, 3.133002890683667, -0.6902922380876192, 0.09563473131477442, 2.056490394534053, 2.017507533465959, 2.394015964756036, -0.3466427504049927}
  elseif (y > 1500) then
    poly_coefs = {5.097475813506625, 29.53058886049267, 1.095399949433705e-10, -6.926279905270773e-16}
    amp = {0.003064332812182054, 0.8973816160666801, 0.03119866094731004, 0.07068988004978655, 0.0001583070735157395, 0.1762683983928151, 0.0004131592685474231, 0.005950873973350208, 0.008489324571543966, 0.00334306526160656, 0.00052946042568393, 0.003743585488835091, 0.2156913373736315, 44576.30467073629, 0.1050203948601217, 0.01883710371633125, 0.380047745859265, 0.0003472930592917774, 0.009225665415301823, 0.002061407071938891, 0.001454599562245767, 5.856419090840883e-05, 0.0007688706809666596, 0.001415547168551922}
    ph = {-0.0003231124735555465, 0.380955331199635, 0.762645225819612, 1.4676293538949, -2.15595770830073, -0.3633370464549665, 1.134950591549256, -2.808169363709888, 0.422381840383887, -0.4226859182049138, -3.091797336860658, 0.7563140142610324, -0.3787677293480213, 1.863828515720658e-10, 0.3794794147818532, -0.7671105159156101, -0.3850942687637987, -3.098506117162865, -0.6738173539748421, 0.09011906278589261, 2.089832317302934, 2.160228985413543, -0.6734226930504117, -0.3333652792566645}
  end

  local jd0 = getJD(y-1,12,31) - 1.0/3
  local delta_T = DeltaT((jd0-2451545 + 365.25*0.5)/36525)
  local offset = 2451545 - jd0 - delta_T
  local lsyn = 29.5306
  local p0 = lunar_comp[1]
  local jdL0 = 2451550.259469 + 0.5*p0*lsyn

  -- Find the lunation number of the first moon phase in the year
  local Lm0 = math.floor((jd0 + 1 - jdL0)/lsyn)-1
  local Lm = 0
  local s = 0
  local s1 = 0
  for i=1, 10 do
    Lm = Lm0 + 0.5*p0 + i-1
    s = poly_coefs[1] + offset + Lm*(poly_coefs[2] + Lm*(poly_coefs[3] + Lm*poly_coefs[4]))
    for j=1, 24 do
      local ang = mod2pi_de(w[j]*Lm) + ph[j]
      s = s + amp[j]*math.sin(ang)
    end
    s1 = math.floor((s-math.floor(s))*1440 + 0.5)
    s = s1 + 1441*math.floor(s) + lunar_comp[2] - offset_comp
    if (s > 1440) then
      break
    end
  end
  Lm0 = Lm
  local mphase = {}
  -- Now decompress the remaining moon-phase times
  for i=2, #lunar_comp do
    Lm = Lm0 + (i-2)*dp
    s = poly_coefs[1] + offset + Lm*(poly_coefs[2] + Lm*(poly_coefs[3] + Lm*poly_coefs[4]))
    for j=1, 24 do
      local ang = mod2pi_de(w[j]*Lm) + ph[j]
      s = s + amp[j]*math.sin(ang)
    end
    s1 = math.floor((s-math.floor(s))*1440 + 0.5)
    local datetime = s1 + 1441*math.floor(s) + lunar_comp[i] - offset_comp
    local day = datetime // 1441
    local hourminute = datetime - 1441 * day
    local hour = hourminute // 60
    local minute = hourminute - 60 * hour
    local the_date = os.time({year=y, month=1, day=day, hour=hour, min=minute})
    table.insert(mphase, the_date)
  end
  return mphase
end

local function solar_terms_in_year(year)
  -- year in [2000, 2500]
  return decode_solar_terms(year, 0, 5, sun_data[year + 1 - 2000])
end

local function moon_phase_in_year(year)
  -- year in [2000, 2500]
  return decode_moon_phases(year, 5, moon_data[year + 1 - 2000], 0.5), moon_data[year + 1 - 2000][1]
end

local function union(a, b)
  local result = {}
  for k,v in pairs ( a ) do
    table.insert( result, v )
  end
  for k,v in pairs ( b ) do
     table.insert( result, v )
  end
  return result
end

function slice(tbl, first, last, step)
  local sliced = {}

  for i = first or 1, last or #tbl, step or 1 do
    sliced[#sliced+1] = tbl[i]
  end

  return sliced
end

local function stride(old_table, steplength)
  local new_table = {}
  local i = 1
  while i < #old_table do
    table.insert(new_table, old_table[i])
    i = i + 2
  end
  return new_table
end

local function datetime_to_date(datetime)
  local date_table = os.date("*t",datetime)
  date_table["hour"] = 0
  date_table["min"] = 0
  date_table["sec"] = 0
  return os.time(date_table)
end

local function to_local_timezone(time, tz)
  local unformated = os.date("%z")
  local sign, hours, minutes = string.match(unformated, "(-?)(%d%d)(%d%d)")
  hours = tonumber(hours)
  minutes = tonumber(minutes)
  if (sign == "-") then
    hours = -hours
    minutes = -minutes
  end
  local date_table = os.date("*t",time)
  date_table["hour"] = date_table["hour"] - tz + hours
  date_table["min"] = date_table["min"] + minutes
  return os.time(date_table)
end

local function ranked_index(date, dates)
  local i = 1
  while i <= #dates do
    if (datetime_to_date(to_local_timezone(dates[i], 8)) > datetime_to_date(date)) then
      break
    end
    i = i + 1
  end
  local date_diff = datetime_to_date(date) - datetime_to_date(to_local_timezone(dates[i - 1], 8))
  return i - 1, math.floor(date_diff / 3600 / 24 + 0.5)
end

local function chinese_number(num)
  local zhChar = {'一','二','三','四','五','六','七','八','九'}
  local places = {'','十','百','千','萬','十','百','千','億','十','百','千','萬'}
  if  type(num) ~=  'number' then
    return num .. 'is not a num'
  end
  local numStr = tostring(num)
  local len = string.len(numStr)
  local str = ''
  local has0 = false
  for i = 1, len do
    local n = tonumber(string.sub(numStr,i,i))
    local p = len - i + 1
    --連續多個零衹顯示一個
    if n > 0 and has0 == true then
      str = str .. '零'
      has0 = false
    end
    --十位數如果是首位則不顯示一十這樣的
    if p % 4 == 2 and n == 1 then
      if len > p then
        str = str .. zhChar[n]
      end
      str = str .. places[p]
    elseif n > 0 then
      str = str .. zhChar[n]
      str = str .. places[p]
    elseif n == 0 then
      --個位是零則補單位
      if p % 4 == 1 then
        str = str .. places[p]
      else
        has0 = true
      end
    end
  end
  return str
end

local function chinese_calendar_months(year)
  local moon_phase_previous_year, first_event = moon_phase_in_year(year - 1)
  local moon_phase = moon_phase_in_year(year)
  local moon_phase_next_year = moon_phase_in_year(year + 1)
  moon_phase = union(moon_phase_previous_year, union(moon_phase, {moon_phase_next_year[1]}))
  moon_phase = slice(moon_phase, first_event + 1, #moon_phase, 2)
  local solar_terms = solar_terms_in_year(year)
  local solar_terms_next_year = solar_terms_in_year(year + 1)
  solar_terms = union(solar_terms, solar_terms_next_year)
  solar_terms = stride(solar_terms, 2)

  local i = 7
  while i <= #moon_phase do
    if (solar_terms[1] < moon_phase[i]) then
      break
    end
    i = i + 1
  end
  moon_phase = slice(moon_phase, i - 1, #moon_phase)
  local months = {}
  i = 7
  while i <= #moon_phase do
    if (solar_terms[13] < moon_phase[i]) then
      break
    end
    i = i + 1
  end
  local month_in_year = i
  if (month_in_year == 14) then
    months = slice(union(month_chinese, month_chinese), 1, #moon_phase)
    for i=1, #months do
      months[i] = months[i] .. "月"
    end
  elseif (month_in_year == 15) then
    local i = 1
    local j = 1
    local count = 0
    local solatice_in_month = {}
    while (i+1 <= #moon_phase) and (j <= #solar_terms) do
      if ((moon_phase[i] <= solar_terms[j]) and (moon_phase[i+1] > solar_terms[j])) then
        count = count + 1
        j = j + 1
      else
        table.insert(solatice_in_month, count)
        count = 0
        i = i + 1
      end
    end
    local leap = 0
    local leapLabel = ""
    for i=1, #solatice_in_month do
      if ((solatice_in_month[i] == 0) and leap == 0) then
        leap = 1
        leapLabel = "閏"
      else
        leapLabel = ""
      end
      local month_name = leapLabel .. month_chinese[(i -1 - leap) % 12 + 1] .. "月"
      if (month_name == "閏正月") then
        month_name = "閏一月"
      end
      table.insert(months, month_name)
    end
  end
  return moon_phase, months
end

local function utc_timezone(unformated)
  local sign, hours, minutes = string.match(unformated, "(-?)(%d%d)(%d%d)")
  local fraction_hours = tonumber(hours) + tonumber(minutes) / 60
  if (sign == "") then
    sign = "+"
  end
  local timezone = "UTC " .. sign .. tostring(fraction_hours)
  timezone = string.gsub(timezone, "%.?0+$", "")
  return timezone
end

local function chinese_weekday(wday)
  local wday_num = tonumber(wday) + 1
  local chinese_weekdays = {"日", "月", "火", "水", "木", "金", "土"}
  return chinese_weekdays[wday_num]
end

local function time_to_num(time)
  local pattern = "(%d+):(%d+) +([AP]M)"
  if string.match(time, pattern) ~= nil then
    local hours, minutes, am = string.match(time, pattern)
    if ((am == "AM") and (tonumber(hours) >= 12)) then
      hours = hours - 12
    elseif ((am == "PM") and (tonumber(hours) < 12)) then
      hours = hours + 12
    end
  else
    pattern = "(%d+):(%d+)"
    hours, minutes = string.match(time, pattern)
  end
  return (hours*60) + minutes
end

local function time_description_chinese(time)
  local time_table = os.date("*t", time)
  local time_in_seconds = time_table["hour"] * 3600 + time_table["min"] * 60 + time_table["sec"]
  local time_in_chinese_minutes = time_in_seconds / 144
  local chinese_hour_index = time_in_chinese_minutes // 25
  local residual = time_in_chinese_minutes % 25
  residual = residual + (chinese_hour_index % 6)
  local percent_day = residual // 6
  local chinese_half_hours = {"初", "正"}
  local chinese_hour = terrestrial_branches[(chinese_hour_index + 1) % 24 // 2 + 1] .. chinese_half_hours[(chinese_hour_index + 1) % 2 + 1]
  local total_minutes = time_in_chinese_minutes % 25
  local percent_day_chinese
  local residual_minutes
  if (percent_day > 0) then
    percent_day_chinese = chinese_number(math.floor(percent_day)) .. "刻"
    residual_minutes = time_in_chinese_minutes % 6
  else
    percent_day_chinese = "初刻"
    residual_minutes = total_minutes
  end
  local residual_minutes_chinese = ""
  if (residual_minutes > 0) then
    residual_minutes_chinese = chinese_number(math.floor(residual_minutes))
  end
  local total_minutes_chinese = chinese_number(math.floor(total_minutes))
  if (total_minutes > 20) and (total_minutes < 30) then
    total_minutes_chinese = "廿" .. chinese_number(math.floor(residual_minutes % 10))
  elseif total_minutes_chinese == "" then
    total_minutes_chinese = "正"
  end
  return chinese_hour .. percent_day_chinese .. residual_minutes_chinese, total_minutes_chinese
end

local function to_celeterre_date(time)
  --西曆每月初已歷天数
  local month_cum_passed_days = {0,31,59,90,120,151,181,212,243,273,304,334}
  local curr_year = tonumber(os.date("%Y", time))
  local curr_month = tonumber(os.date("%m", time))
  local curr_day = tonumber(os.date("%d", time))
  local days_since_reference_day = (curr_year - 1921) * 365 + math.floor((curr_year - 1921) / 4) + curr_day + month_cum_passed_days[curr_month] - 38
  if (((curr_year % 4) == 0) and (curr_month > 2)) then
    days_since_reference_day = days_since_reference_day + 1
  end
  local date_index = days_since_reference_day + 37
  local celeterre_date = celestial_stems[date_index % 10 + 1] .. terrestrial_branches[date_index % 12 + 1]

  --干支年月
  local solar_terms = solar_terms_in_year(curr_year)
  local solar_terms_next_year = solar_terms_in_year(curr_year + 1)
  solar_terms = union(solar_terms, solar_terms_next_year)
  solar_terms = stride(slice(solar_terms, 4), 2) --立春爲始
  local year_index = (curr_year - 4) % 60
  if time < to_local_timezone(solar_terms[1], 8) then
    year_index = (year_index - 1) % 60
  end
  local celeterre_year = celestial_stems[year_index % 10 + 1] .. terrestrial_branches[year_index % 12 + 1]

  local i = 1
  while i <= #solar_terms do
    if (to_local_timezone(solar_terms[i], 8) > time) then
      break
    end
    i = i + 1
  end
  local month_index = i - 1
  month_index = month_index + 12 * (year_index % 5) + 1
  local celeterre_month = celestial_stems[month_index % 10 + 1] .. terrestrial_branches[month_index % 12 + 1]

  --干支時
  local hour = tonumber(os.date("%H", time))
  local hour_index = (hour + 1) % 24 // 2
  if hour >= 23 then
    date_index = date_index + 1
  end
  hour_index = hour_index + 12 * (date_index % 5)
  local chinese_hour = celestial_stems[hour_index % 10 + 1] .. terrestrial_branches[hour_index % 12 + 1]
  return celeterre_year .. celeterre_month .. celeterre_date .. chinese_hour
end

local function to_chinese_cal_local(time)
  --西曆每月初已歷天数
  local month_cum_passed_days = {0,31,59,90,120,151,181,212,243,273,304,334}
  local curr_year = tonumber(os.date("%Y", time))
  local curr_month = tonumber(os.date("%m", time))
  local curr_day = tonumber(os.date("%d", time))
  local days_since_reference_day = (curr_year - 1921) * 365 + math.floor((curr_year - 1921) / 4) + curr_day + month_cum_passed_days[curr_month] - 38
  if (((curr_year % 4) == 0) and (curr_month > 2)) then
    days_since_reference_day = days_since_reference_day + 1
  end
  local celeterre_date = celestial_stems[(days_since_reference_day - 3) % 10 + 1] .. terrestrial_branches[(days_since_reference_day + 1) % 12 + 1]

  local eclipse, months = chinese_calendar_months(tonumber(os.date("%Y", time)))
  local month_index, day_index = ranked_index(time, eclipse)
  local month_length = math.floor((datetime_to_date(to_local_timezone(eclipse[month_index+1],8)) - datetime_to_date(to_local_timezone(eclipse[month_index],8))) / (24 * 60 * 60))
  local month_length_des = {"小", "大"}
  month_length = month_length_des[month_length-28]
  local chinese_month = months[month_index]
  local chinese_day = day_chinese[day_index+1]
  if ((chinese_month == "冬月") or (chinese_month == "閏冬月") or (chinese_month == "臘月") or (chinese_month == "閏臘月")) then
    curr_year = curr_year - 1
  end
  local chinese_year = celestial_stems[(((curr_year - 4) % 60) % 10)+1] .. terrestrial_branches[(((curr_year - 4) % 60) % 12) + 1] .. "年"
  return chinese_year .. chinese_month .. chinese_day, month_length .. " " .. celeterre_date
end

local function date_diff_chinese(diff)
  local desp
  if (diff > 2) then
    desp = chinese_number(diff) .. "日後"
  elseif (diff == 2) then
    desp = "後日"
  elseif (diff == 1) then
    desp = "明日"
  elseif (diff == 0) then
    desp = "今日"
  elseif (diff == -1) then
    desp = "昨日"
  elseif (diff == -2) then
    desp = "前日"
  elseif (diff < -2) then
    desp = chinese_number(-diff) .. "日前"
  end
  return desp
end

local function clock_face(time)
  local faces = {"🕛", "🕧", "🕐", "🕜", "🕑", "🕝", "🕒", "🕞", "🕓", "🕟", "🕔", "🕠", "🕕", "🕡", "🕖", "🕢", "🕗", "🕣", "🕘", "🕤", "🕙", "🕥", "🕚", "🕦"}
  local time_table = os.date("*t", time)
  local time_in_minutes = time_table["hour"] * 60 + time_table["min"]
  local clock_face_index = ((time_in_minutes + 15) % (60 * 24) // 30 % 24) + 1
  return faces[clock_face_index]
end

local function date_translator(input, seg, env)
  local on = env.engine.context:get_option("show_date")
  assert(os.setlocale"en_US")
  if (on and input == "ona") then
    -- 今日
    local preedit = "人弓 日"
    local date = string.gsub(os.date("%Y年%m月%d日"), "([^%d])0+", "%1")
    local weekday = chinese_weekday(os.date("%w"))
    local candidate = Candidate("date", seg.start, seg._end, date, weekday)
    candidate.preedit = preedit
    yield(candidate)
    weekday = os.date("%a")
    candidate = Candidate("date", seg.start, seg._end, string.gsub(os.date("%b %d, %Y"), "([^%d])0+", "%1"), weekday)
    candidate.preedit = preedit
    yield(candidate)
    date = string.gsub(os.date("%m/%d/%Y"), "([^%d])0+", "%1")
    date = string.gsub(date, "^0+", "")
    candidate = Candidate("date", seg.start, seg._end, date, weekday)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "tmtjmhda") then
    -- 華曆
    local preedit = "廿一廿十 一竹木日"
    local chinese_date, celestrete_date = to_chinese_cal_local(os.time())
    local candidate = Candidate("date", seg.start, seg._end, chinese_date, celestrete_date)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "etlomhda") then
    -- 漢曆
    local preedit = "水廿中人 一竹木日"
    local chinese_date, celestrete_date = to_chinese_cal_local(os.time())
    local candidate = Candidate("date", seg.start, seg._end, chinese_date, celestrete_date)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "hojnd") then
    -- 八字
    local preedit = "竹人 十弓木"
    local celeterre_date = to_celeterre_date(os.time())
    local candidate = Candidate("date", seg.start, seg._end, celeterre_date, "")
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "aagdi") then
    -- 日時
    local preedit = "日 日土木戈"
    local time = os.time()
    local chinese_date, _ = to_chinese_cal_local(time)
    local time_discrpt = time_description_chinese(time)
    local celeterre_date = to_celeterre_date(time)
    local candidate = Candidate("date", seg.start, seg._end, chinese_date .. time_discrpt, celeterre_date)
    candidate.preedit = preedit
    yield(candidate)

    local date = string.gsub(os.date("%Y年%m月%d日 %H:%M", time), "([^%d:])0", "%1")
    local weekday = chinese_weekday(os.date("%w", time))
    candidate = Candidate("date", seg.start, seg._end, date, weekday)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "tubybhg") then
    -- 朔望
    local preedit = "廿山月 卜月竹土"
    local moon_phase_previous = moon_phase_in_year(tonumber(os.date("%Y")) - 1)
    local moon_phase, first_event = moon_phase_in_year(tonumber(os.date("%Y")))
    local moon_phase_next = moon_phase_in_year(tonumber(os.date("%Y")) + 1)
    moon_phase = union({moon_phase_previous[#moon_phase_previous]}, union(moon_phase, {moon_phase_next[1]}))
    first_event = 1 - first_event
    local index = ranked_index(os.time(), moon_phase)
    local luna_event_names = {"朔", "望"}

    local previous_lunar_event = luna_event_names[(first_event + index - 1) % 2 + 1]
    local date_diff_to_previous = datetime_to_date(os.time()) - datetime_to_date(to_local_timezone(moon_phase[index], 8))
    date_diff_to_previous = math.floor(date_diff_to_previous // 3600 //24 + 0.5)
    date_diff_to_previous = date_diff_chinese(-date_diff_to_previous)
    date_diff_to_previous = date_diff_to_previous .. time_description_chinese(to_local_timezone(moon_phase[index], 8))
    local candidate = Candidate("date", seg.start, seg._end, previous_lunar_event, date_diff_to_previous)
    candidate.preedit = preedit
    yield(candidate)

    local approching_lunar_event = luna_event_names[(first_event + index) % 2 + 1]
    local date_diff_to_approaching = datetime_to_date(to_local_timezone(moon_phase[index+1], 8)) - datetime_to_date(os.time())
    date_diff_to_approaching = math.floor(date_diff_to_approaching // 3600 //24 + 0.5)
    date_diff_to_approaching = date_diff_chinese(date_diff_to_approaching)
    date_diff_to_approaching = date_diff_to_approaching .. time_description_chinese( to_local_timezone(moon_phase[index+1], 8))
    candidate = Candidate("date", seg.start, seg._end, approching_lunar_event, date_diff_to_approaching)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "hailonfd") then
    -- 節氣
    local preedit = "竹日戈中 人弓火木"
    local solar_terms = solar_terms_in_year(tonumber(os.date("%Y")))
    local solar_terms_next = solar_terms_in_year(tonumber(os.date("%Y")) + 1)
    solar_terms = union(solar_terms, slice(solar_terms_next, 1, 2))
    local index = ranked_index(os.time(), solar_terms)

    local previous_solar_event = solar_term_chinese[index]
    local date_diff_to_previous = datetime_to_date(os.time()) - datetime_to_date(to_local_timezone(solar_terms[index], 8))
    date_diff_to_previous = math.floor(date_diff_to_previous // 3600 //24 + 0.5)
    date_diff_to_previous = date_diff_chinese(-date_diff_to_previous)
    date_diff_to_previous = date_diff_to_previous .. time_description_chinese(to_local_timezone(solar_terms[index], 8))
    local candidate = Candidate("date", seg.start, seg._end, previous_solar_event, date_diff_to_previous)
    candidate.preedit = preedit
    yield(candidate)

    local approching_solar_event = solar_term_chinese[index+1]
    local date_diff_to_approaching = datetime_to_date(to_local_timezone(solar_terms[index+1], 8)) - datetime_to_date(os.time())
    date_diff_to_approaching = math.floor(date_diff_to_approaching // 3600 //24 + 0.5)
    date_diff_to_approaching = date_diff_chinese(date_diff_to_approaching)
    date_diff_to_approaching = date_diff_to_approaching .. time_description_chinese( to_local_timezone(solar_terms[index+1], 8))
    candidate = Candidate("date", seg.start, seg._end, approching_solar_event, date_diff_to_approaching)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "bjjobt") then
    -- 月輪
    local preedit = "月 十十人月廿"
    local moon_phase_previous = moon_phase_in_year(tonumber(os.date("%Y")) - 1)
    local moon_phase, first_event = moon_phase_in_year(tonumber(os.date("%Y")))
    local moon_phase_next = moon_phase_in_year(tonumber(os.date("%Y")) + 1)
    moon_phase = union({moon_phase_previous[#moon_phase_previous]}, union(moon_phase, {moon_phase_next[1]}))
    first_event = 1 - first_event
    local index = ranked_index(os.time(), moon_phase)

    local date_diff_to_previous = os.time() - to_local_timezone(moon_phase[index], 8)
    local date_diff_to_approaching = to_local_timezone(moon_phase[index+1], 8) - os.time()
    local moon_phase_fraction = date_diff_to_previous / (date_diff_to_previous + date_diff_to_approaching) * 0.5
    if ((first_event + index - 1) % 2 == 1) then
      moon_phase_fraction = moon_phase_fraction + 0.5
    end
    local moon_phase_emojis = {"🌑", "🌒", "🌓", "🌔", "🌕", "🌖", "🌗", "🌘"}
    local choice = math.floor((moon_phase_fraction * 8 + 0.5) % 8.0) + 1
    local candidate = Candidate("date", seg.start, seg._end, moon_phase_emojis[choice], string.format("%.f°", moon_phase_fraction * 360))
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "onagdi") then
    -- 今時
    local preedit = "人弓 日土木戈"
    local time = os.time()
    local time_chinese, chinese_minutes = time_description_chinese(time)
    local candidate = Candidate("time", seg.start, seg._end, time_chinese, chinese_minutes)
    candidate.preedit = preedit
    yield(candidate)
    local time_string = string.gsub(os.date("%H:%M", time), "^0", "")
    local candidate = Candidate("time", seg.start, seg._end, time_string, "")
    candidate.preedit = preedit
    yield(candidate)
    local time_string = string.gsub(os.date("%I:%M %p", time), "^0", "")
    local current_clock_face = clock_face(time)
    candidate = Candidate("time", seg.start, seg._end, time_string, " " .. current_clock_face)
    candidate.preedit = preedit
    yield(candidate)
  elseif (on and input == "agdisrrr") then
    -- 時區
    local preedit = "日土木戈 尸口口口"
    local timezone = utc_timezone(os.date("%z"))
    local timezone_discrpt = os.date("%Z")
    local candidate = Candidate("timezone", seg.start, seg._end, timezone, timezone_discrpt)
    candidate.preedit = preedit
    yield(candidate)
  end
end

return date_translator
