proc breakList {l n} {

#	given a list l, break it into n sublists of approx equal length

	set ll [llength $l]
	set over [int [fmod $ll $n]]
	set sl [expr $ll/$n]

	loop i 0 $n {
		if {$over} {
		set e $sl
		incr over -1
		} else {
		set e [expr $sl - 1]
		}
		set sub [lrange $l 0 $e]
		lappend ret $sub
		set l [lrange $l [expr $e+1] end]
	}

	return "$ret"
}
