from datetime import *

start_date = date(2006, 7, 26)

end_date = date(2010, 7, 25)

col_start_date = date(2006, 7, 10)
while col_start_date.weekday() != 6:
	col_start_date -= timedelta(1)

holiday_set = set()
def holiday(y,m,d):
	holiday_set.add(date(y,m,d))
def holidays(y1,m1,d1,y2,m2,d2):
	day = date(y1,m1,d1)
	end = date(y2,m2,d2)
	while day <= end:
		holiday(day.year, day.month, day.day)
		day += timedelta(1)

holidays(start_date.year, start_date.month, start_date.day, 2006, 8, 20)

# Freshman year
holiday(2006, 9, 4)
holiday(2006, 11, 10)
holiday(2006, 11, 23)
holiday(2006, 11, 24)
holidays(2006, 12, 18, 2007, 1, 1) # Winter break
holiday(2007, 1, 15)
holidays(2007, 2, 19, 2007, 2, 23)
holidays(2007, 4, 16, 2007, 4, 20)
holiday(2007, 5, 28)

holidays(2007, 6, 8, 2007, 8, 27) # Summer vacation

# Sophomore year
holiday(2007, 9, 3)
holiday(2007, 11, 12)
holiday(2007, 11, 22)
holiday(2007, 11, 23)
holidays(2007, 12, 24, 2008, 1, 4)
holiday(2008, 1, 21)
holidays(2008, 2, 18, 2008, 2, 22)
holidays(2008, 4, 14, 2008, 4, 18)
holiday(2008, 5, 26)

holidays(2008, 6, 13, 2008, 9, 22) # Summer vacation

# Junior year
holidays(2008, 11, 8, 2008, 11, 10)
holidays(2008, 11, 27, 2008, 11, 30)
holidays(2008, 12, 13, 2009, 1, 4) # Fall -> Winter Quarter
holidays(2009, 1, 17, 2009, 1, 19)
holidays(2009, 2, 13, 2009, 2, 16)
holidays(2009, 3, 28, 2009, 4, 5) # Winter -> Spring Quarter
holidays(2009, 5, 23, 2009, 5, 25)

holidays(2009, 6, 27, 2009, 9, 21) # Summer vacation

# Senior year
holiday(2009, 11, 13)
holidays(2009, 11, 26, 2009, 11, 29)
holidays(2009, 12, 12, 2010, 1, 4) # Fall -> Winter Quarter
holiday(2010, 1, 18)
holidays(2010, 2, 12, 2010, 2, 15)
holidays(2010, 3, 27, 2010, 4, 4)
holidays(2010, 5, 29, 2010, 5, 31)

holidays(2010, 6, 26, end_date.year, end_date.month, end_date.day)



num_school_days = 0
num_days = 0

def day_color(day):
	
	global num_days
	num_days += 1
	
	# Weekends
	if day.weekday() in [5,6]:
		return "white"
	
	# Holidays
	if day in holiday_set:
		return "white"
	
	global num_school_days
	num_school_days += 1
	return "black"

cols = 7 * 5
hsep = 0.3
vsep = 0.3

def day_x(date):
	return 1.0 + ((date - col_start_date).days % cols) * hsep

def day_y(date):
	return 1.0 + ((date - col_start_date).days // cols) * vsep

def dot(x,y,color):
	print "amove", x, y
	print "circle", 0.1, "fill", color

width = (cols - 1) * hsep + 2.0
height = ((end_date-start_date).days // cols + 1 - 1) * vsep + 2.0
print "size", width, height
d = start_date
while d <= end_date:
	color = day_color(d)
	x = day_x(d)
	y = height - day_y(d)
	dot(x,y,color)
	d = d + timedelta(1)

import sys
print >>sys.stderr, num_school_days, "/", num_days