A Lesson in Being Bull-Headed

Joy Huang
Data Mining the City
13 min readOct 17, 2018

Our built environment is not only the scenery that surrounds us, but also a determinant of our daily actions and interactions. Physical spaces have a direct correlation with the human feats that happen within them. At an urban scale, this reality implies that the characteristics of a city, such as its grid dimensions, street configurations, and access to open areas influence the activity and public safety of its citizens. As designers, observing patterns in crowd chaos can help us make better urban design decisions in the case of emergency situations such as evacuations, natural disasters or mobs. In a world where minimizing risk is an increasingly critical design factor, where visible climate change, global conflicts, and environmental hazards are more apparent than ever, simulations serve as an important tool in predicting and observing patterns of risky scenarios without relying solely on the recollection of data from dangerous real life situations. Agent based scenario modeling allows for predictive modeling without needing human sacrifice in the name of science.

To this end, our group has chosen the Running of the Bulls in Pamplona as a precedent for the analysis of crowd chaos. The Running of the Bulls occurs yearly during the Festival of San Fermín, during which bulls are released into the streets as people dodge and run away from them in a display of bravery and tradition. Known for its high risk factor, hundreds of people are injured at this event every year. However, these injuries are primarily caused by overcrowding and trampling, and not by actual interaction with the bulls or goring. Since 1924, only 13 people have died due to goring during this traditional event.

Our hypothesis is that this risk caused by overcrowding is intensified by Pamplona’s urban qualities. Its narrow and unorganized streets increase the risk caused by crowd chaos. In order to test this, we have decided to simulate the running of the bulls in two contrasting urban grids: Pamplona and New York City. Each city grid has unique characteristics that will directly affect the simulation of our crowd. Pamplona is a European city with an irregular organic grid and a street width of about 14 feet. New York City is organized by a rectangular grid, with a street widths approximately double the width of its avenues. Humans, represented by the smaller dots, will appear blue if they are injured by collision with other humans repeatedly or colliding once with a bull (larger dot). Red indicates that the human agent has died from sustained collision with other humans or by colliding twice with a bull. By running our simulation in these grids we can draw conclusions about their direct impact on fatalities in crowded spaces and the results of stampeding.

Starting population = 50, crowded street, 1 bull

Our simulation for Pamplona begins and ends with numbers fairly in line with the actual running of the bulls. A few die, but people generally escape with a few scrapes. The bulls, going after a few individuals, are led away from the main crowd, allowing plenty of time for people to exit.

Starting population = 100, densely clustered, flanked by 4 bulls

From the above simulation, we can see that few are left alive when flanked on all four sides and packed into a single street. While the results are in line with our intuitive expectations of such a starting configuration, it is worthwhile to note that most of the casualties are not from the bulls themselves but from people-to-people collision. This seems more representative of scenarios that may play out in high density stampede zones.

Starting population 104, scattered, 4 bulls

The smaller, more organically shaped streets of Pamplona result in casualties that are relatively concentrated in certain areas. The bulls rampage within their immediate vicinity, but generally have a hard time navigating all the curves and turns.

TIMES SQUARE, NYC

Starting population = 51, 2 bulls, crowded streets

Despite being rather densely packed, the broad corridors of Times Square allow relative easy of access to the smaller capillary streets to escape. The bulls, after losing their initial direction due to being in a directionless space, cannot efficiently decide who to attack.

Starting population = 50, densely packed corridor, 4 bulls

Like in Pamplona, instances of huge populations packed into one area results in heavy casualties and often immediate injuries mostly from person to person collision. Erratic pushing and bouncing off of each other actually traps a significant group into a corner, unable to escape in an orderly fashion.

Starting population = 100, scattered, 4 bulls

It seems safe to say that regardless of street configuration, people tend to be relatively safe if loosely scattered throughout the area even with multiple attackers. In the case of bulls, given a relatively simplistic chase behavior, the bulls actually become confused as to who to go for when surrounded by people.

THE CODE

Writing the entire code from scratch, the most challenging part was dealing with object collision, since there is no predefined function in python nor processing that allows for polygon to polygon collision detection.

While the people and bull class were relatively ok to figure out due to them utilizing point-to-point collision, the polygon collision is much more nuisanced.

In solving this problem, many possible designs were deliberated over, but the one that required the least amount of checks was to calculate the distances between the point and endpoints of the walls; if the sum of the two distances is within a “delta” of the length of the wall, it becomes a “collision”. When the object “collides” with the wall, there is a change in velocity, which is coded as a vector (PVector).

The downside to this is that the delta tends to be unreliable in completely keeping all objects out. Depending on the value of the delta, objects will either “slip through” the wall if they collide at past a certain velocity, or appear to be floating off invisible walls if the delta is too large.

If I have more time, I can come up with an amenable solution to this issue of slippage.

#code by Joyimport random
import math
xMax = 1000
yMax = 1000
class People:

def __init__(self, x, y, startSim=False, isDead=False, isInjured=False):
self.startSim = startSim
self.injuryCount = 0
self.isInjured = isInjured
self.isDead = isDead
self.position = PVector(x, y)
self.velocity = PVector.random2D().mult(1)
self.radius = 3
self.m = self.radius*0.1
self.running = False

def update(self):
if self.isDead:
return
self.position.add(self.velocity)
if self.injuryCount > 0:
self.isInjured = True
if self.injuryCount > 30:
self.isDead = True

def display(self):
noStroke()
if self.isDead:
fill(255, 0, 0)
elif self.injuryCount > 0:
fill(0, 255, 255)
else:
fill(0)
ellipse(self.position.x, self.position.y, self.radius*2, self.radius*2)

if self.startSim:
self.update()

def beginSim(self):
self.startSim = True

def stopSim(self):
self.startSim = False

def collision(self, other):
if not self.startSim:
return

#Get distance between people
distanceVect = PVector.sub(other.position, self.position)

#Calculate magnitude of the vector separating the balls
distanceVectMag = distanceVect.mag()

#minimum distance before they are touching
minDistance = float(self.radius + other.radius)

if (distanceVectMag < minDistance):
distanceCorrection = (minDistance-distanceVectMag)/2.0
d = distanceVect.copy()
correctionVector = d.normalize().mult(distanceCorrection)
other.position.add(correctionVector)
self.position.sub(correctionVector)

#get angle of distance vector
theta = distanceVect.heading()
#precalculate trig values
sine = sin(theta)
cosine = cos(theta)

bTemp= [
PVector(),
PVector()
]

bTemp[1].x = cosine * distanceVect.x + sine*distanceVect.y
bTemp[1].y = cosine * distanceVect.y - sine * distanceVect.x

#rotate temp velocity
vTemp = [
PVector(),
PVector()
]
vTemp[0].x = cosine * self.velocity.x + sine*self.velocity.y
vTemp[0].y = cosine * self.velocity.y - sine*self.velocity.x
vTemp[1].x = cosine * other.velocity.x + sine*other.velocity.y
vTemp[1].y = cosine * other.velocity.y + sine*other.velocity.x

vFinal = [
PVector(),
PVector()
]

# final rotated velocity for b[0]
vFinal[0].x = ((self.m - other.m) * vTemp[0].x + 2 * other.m * vTemp[1].x) / (self.m + other.m);
vFinal[0].y = vTemp[0].y;

# final rotated velocity for b[0]
vFinal[1].x = ((other.m - self.m) * vTemp[1].x + 2 * self.m * vTemp[0].x) / (self.m + other.m);
vFinal[1].y = vTemp[1].y;

# hack to avoid clumping
bTemp[0].x += vFinal[0].x;
bTemp[1].x += vFinal[1].x;


bFinal = [
PVector(),
PVector()
]
bFinal[0].x = cosine * bTemp[0].x - sine * bTemp[0].y
bFinal[0].y = cosine * bTemp[0].y + sine * bTemp[0].x
bFinal[1].x = cosine * bTemp[1].x - sine * bTemp[1].y
bFinal[1].y = cosine * bTemp[1].y + sine * bTemp[1].x

#update balls to screen position
self.velocity.x = cosine * vFinal[0].x - sine * vFinal[0].y
self.velocity.y = cosine * vFinal[0].y + sine * vFinal[0].x
if other.__class__.__name__ == 'People':
other.velocity.x = cosine * vFinal[1].x - sine * vFinal[1].y
other.velocity.y = cosine * vFinal[1].y + sine * vFinal[1].x

other.position.x = self.position.x + bFinal[1].x
other.position.y = self.position.y + bFinal[1].y

if self.running:
self.injuryCount += 1
else:
self.injuryCount += 10
self.position.add(bFinal[0])
class Bull:

def __init__(self, x, y, startSim=False):
self.startSim = startSim
self.position = PVector(x, y)
self.velocity = PVector.random2D().mult(3)
self.radius = 5
self.m = self.radius*0.1
def update(self):
self.position.add(self.velocity)
if (self.position.x > width-self.radius):
self.position.x = width-self.radius
self.velocity.x *= -0.9
elif (self.position.x < self.radius):
self.position.x = self.radius
self.velocity.x *= -0.9
elif (self.position.y > height-self.radius):
self.position.y = height-self.radius
self.velocity.y *= -0.9
elif (self.position.y < self.radius):
self.position.y = self.radius
self.velocity.y *= -0.9

def display(self):
noStroke()
fill(60)
if self.startSim:
self.update()
ellipse(self.position.x, self.position.y, self.radius*2, self.radius*2)

def beginSim(self):
self.startSim = True

def stopSim(self):
self.startSim = False

class Wall:

delta = 5

def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.wallLength = dist(x1, y1, x2, y2)
self.normVector = PVector(-(y2-y1), x2-x1).normalize()

def display(self):
#stroke(0)
noStroke()
line(self.x1, self.y1, self.x2, self.y2)
line((self.x1 + self.x2)/2, (self.y1 + self.y2)/2, (self.x1 + self.x2)/2 + self.normVector.x, (self.y1 + self.y2)/2 + self.normVector.y)

def collision(self, other):
d1 = dist(other.position.x, other.position.y, self.x1, self.y1)
d2 = dist(other.position.x, other.position.y, self.x2, self.y2)
if ( ((d1+d2) >= (self.wallLength - Wall.delta)) and ((d1+d2) <= (self.wallLength + Wall.delta)) ):
other.velocity = PVector.sub(other.velocity, PVector.mult(self.normVector, 2 * PVector.dot(other.velocity, self.normVector)))

peopleList = []
bullList = []
wallList = []
def setup():
global img
size(xMax, yMax)

img = loadImage("timessquare1.jpg")
#image(img, 0, 0)
''' here we substitute the individual polygon vertices that make up each individual map, coded by Kevin (NYC), Inea (Pamplona), and Ethan (Jackson) respectively'''def keyPressed():
global peopleList
global bullList
global wallList
if key == 'p':
new_person = People(mouseX, mouseY)
peopleList.append(new_person)
for p in peopleList:
p.stopSim()
for b in bullList:
b.stopSim()
elif key == 'b':
new_bull = Bull(mouseX, mouseY)
bullList.append(new_bull)
for p in peopleList:
p.stopSim()
for b in bullList:
b.stopSim()
elif key == ' ':
for p in peopleList:
p.beginSim()
for bull in bullList:
bull.beginSim()
def draw():
global peopleList
global bullList
global wallList
to_remove = set()
background(255)
image(img, 0, 0)
for p_i in range(len(peopleList)):
peopleList[p_i].display()
for p_j in range(p_i + 1, len(peopleList)):
peopleList[p_i].collision(peopleList[p_j])
for b_i in range(len(bullList)):
peopleList[p_i].collision(bullList[b_i])
for b_i in range(len(bullList)):
bullList[b_i].display()
for w_i in range(len(wallList)):
wallList[w_i].display()
for p_i in range(len(peopleList)):
wallList[w_i].collision(peopleList[p_i])
for b_i in range(len(bullList)):
wallList[w_i].collision(bullList[b_i])
for p_i in range(len(peopleList)):
min_dist = 1e6
closest_bull = -1
for b_i in range(len(bullList)):
bull_dist = PVector.dist(peopleList[p_i].position, bullList[b_i].position)
if bull_dist < min_dist:
min_dist = bull_dist
closest_bull = b_i
if closest_bull != -1 and min_dist < 100:
peopleList[p_i].velocity.add(PVector.sub(peopleList[p_i].position, bullList[closest_bull].position).normalize()).limit(3)
peopleList[p_i].running = True
else:
peopleList[p_i].running = False
for b_i in range(len(bullList)):
min_dist = 1e6
closest_people = -1
for p_i in range(len(peopleList)):
if peopleList[p_i].isDead:
continue
people_dist = PVector.dist(peopleList[p_i].position, bullList[b_i].position)
if people_dist < min_dist:
min_dist = people_dist
closest_people = p_i
if closest_people != -1 and min_dist < 500:
bullList[b_i].velocity.add(PVector.sub(peopleList[closest_people].position, bullList[b_i].position).normalize()).limit(5)

dead = 0
injured = 0
alive = 0
strt = 0
for person in peopleList:
strt += 1
alive += 1
if person.isDead:
dead+=1
alive -= 1
if person.isInjured:
injured += 1



textSize(20)
fill(0)
text("start : " + str(strt), 800, 860, 200, 150)
text("alive : " +str(alive), 800, 890, 200, 150)
text("dead : " +str(dead), 800, 920, 200, 150)
text("injured : " + str(injured), 800, 950, 200, 150)

Below are individual map codes by vertices:

Pamplona by Inea

    #Pamplona by Inea
wallList.append(Wall(145,294,73,319))
wallList.append(Wall(200,331,145,294))
wallList.append(Wall(103,382,200,331))
wallList.append(Wall(73,319,103,382))


wallList.append(Wall(214,344,110,397))
wallList.append(Wall(339,416,214,344))
wallList.append(Wall(161,493,339,416))
wallList.append(Wall(110,397,161,493))


wallList.append(Wall(354,426,167,506))
wallList.append(Wall(305,536,354,426))
wallList.append(Wall(207,598,305,536))
wallList.append(Wall(167,506,207,598))


wallList.append(Wall(64,325,0,353))
wallList.append(Wall(94,387,64,325))
wallList.append(Wall(0,438,94,387))
wallList.append(Wall(0,353,0,438))


wallList.append(Wall(101,401,0,455))
wallList.append(Wall(147,498,101,401))
wallList.append(Wall(0,563,147,498))
wallList.append(Wall(0,455,0,563))


wallList.append(Wall(153,512,0,579))
wallList.append(Wall(193,601,153,512))
wallList.append(Wall(117,644,193,601))
wallList.append(Wall(0,600,117,644))
wallList.append(Wall(0,579,0,600))


wallList.append(Wall(114,662,0,618))
wallList.append(Wall(203,612,114,662))
wallList.append(Wall(231,667,203,612))
wallList.append(Wall(126,729,231,667))
wallList.append(Wall(27,751,126,729))
wallList.append(Wall(0,718,27,751))
wallList.append(Wall(0,618,0,718))


wallList.append(Wall(258,591,213,618))
wallList.append(Wall(279,616,258,591))
wallList.append(Wall(231,651,279,616))
wallList.append(Wall(213,618,231,651))


wallList.append(Wall(11,244,0,248))
wallList.append(Wall(44,319,11,244))
wallList.append(Wall(0,339,44,319))
wallList.append(Wall(0,248,0,339))


wallList.append(Wall(236,161,17,243))
wallList.append(Wall(282,279,236,161))
wallList.append(Wall(249,249,282,279))
wallList.append(Wall(209,317,249,249))
wallList.append(Wall(145,281,209,317))
wallList.append(Wall(51,317,145,281))
wallList.append(Wall(17,243,51,317))


wallList.append(Wall(253,268,220,324))
wallList.append(Wall(324,334,253,268))
wallList.append(Wall(425,398,324,334))
wallList.append(Wall(412,419,425,398))
wallList.append(Wall(367,416,412,419))
wallList.append(Wall(220,324,367,416))


wallList.append(Wall(321,542,268,576))
wallList.append(Wall(416,491,321,542))
wallList.append(Wall(415,435,416,491))
wallList.append(Wall(451,465,415,435))
wallList.append(Wall(450,492,451,465))
wallList.append(Wall(434,515,450,492))
wallList.append(Wall(292,611,434,515))
wallList.append(Wall(268,576,292,611))


wallList.append(Wall(395,431,367,425))
wallList.append(Wall(404,464,395,431))
wallList.append(Wall(395,487,404,464))
wallList.append(Wall(329,522,395,487))
wallList.append(Wall(361,458,329,522))
wallList.append(Wall(367,425,361,458))


wallList.append(Wall(335,177,269,194))
wallList.append(Wall(353,183,335,177))
wallList.append(Wall(433,264,353,183))
wallList.append(Wall(386,356,433,264))
wallList.append(Wall(329,320,386,356))
wallList.append(Wall(293,274,329,320))
wallList.append(Wall(269,194,293,274))


wallList.append(Wall(295,630,245,672))
wallList.append(Wall(320,662,295,630))
wallList.append(Wall(266,703,320,662))
wallList.append(Wall(245,672,266,703))


wallList.append(Wall(0,230,0,0))
wallList.append(Wall(216,151,0,230))
wallList.append(Wall(238,147,216,151))
wallList.append(Wall(258,155,238,147))
wallList.append(Wall(264,183,258,155))
wallList.append(Wall(332,168,264,183))
wallList.append(Wall(356,172,332,168))
wallList.append(Wall(438,258,356,172))
wallList.append(Wall(451,243,438,258))
wallList.append(Wall(424,206,451,243))
wallList.append(Wall(425,181,424,206))
wallList.append(Wall(441,161,425,181))
wallList.append(Wall(474,159,441,161))
wallList.append(Wall(498,147,474,159))
wallList.append(Wall(522,148,498,147))
wallList.append(Wall(516,57,522,148))
wallList.append(Wall(531,48,516,57))
wallList.append(Wall(549,46,531,48))
wallList.append(Wall(553,22,549,46))
wallList.append(Wall(561,10,553,22))
wallList.append(Wall(613,4,561,10))
wallList.append(Wall(0,0,613,4))


wallList.append(Wall(450,265,393,364))
wallList.append(Wall(468,258,450,265))
wallList.append(Wall(481,264,468,258))
wallList.append(Wall(481,274,481,264))
wallList.append(Wall(465,303,481,274))
wallList.append(Wall(608,358,465,303))
wallList.append(Wall(583,390,608,358))
wallList.append(Wall(481,429,583,390))
wallList.append(Wall(393,364,481,429))


wallList.append(Wall(431,404,423,418))
wallList.append(Wall(469,437,431,404))
wallList.append(Wall(479,438,469,437))
wallList.append(Wall(500,466,479,438))
wallList.append(Wall(491,474,500,466))
wallList.append(Wall(458,567,491,474))
wallList.append(Wall(330,657,458,567))
wallList.append(Wall(305,624,330,657))
wallList.append(Wall(434,532,305,624))
wallList.append(Wall(460,501,434,532))
wallList.append(Wall(466,467,460,501))
wallList.append(Wall(461,446,466,467))
wallList.append(Wall(423,418,461,446))


wallList.append(Wall(435,202,464,239))
wallList.append(Wall(435,184,435,202))
wallList.append(Wall(448,171,435,184))
wallList.append(Wall(479,172,448,171))
wallList.append(Wall(502,172,479,172))
wallList.append(Wall(491,238,502,172))
wallList.append(Wall(464,239,491,238))


wallList.append(Wall(502,156,495,162))
wallList.append(Wall(535,152,502,156))
wallList.append(Wall(525,61,535,152))
wallList.append(Wall(550,60,525,61))
wallList.append(Wall(570,177,550,60))
wallList.append(Wall(495,162,570,177))


wallList.append(Wall(538,419,491,438))
wallList.append(Wall(546,431,538,419))
wallList.append(Wall(510,459,546,431))
wallList.append(Wall(491,438,510,459))


wallList.append(Wall(584,401,544,415))
wallList.append(Wall(679,554,584,401))
wallList.append(Wall(649,570,679,554))
wallList.append(Wall(629,537,649,570))
wallList.append(Wall(618,540,629,537))
wallList.append(Wall(544,415,618,540))


wallList.append(Wall(609,542,549,435))
wallList.append(Wall(529,575,609,542))
wallList.append(Wall(469,561,529,575))
wallList.append(Wall(500,482,469,561))
wallList.append(Wall(549,435,500,482))


wallList.append(Wall(459,578,272,711))
wallList.append(Wall(488,664,459,578))
wallList.append(Wall(315,773,488,664))
wallList.append(Wall(272,711,315,773))


wallList.append(Wall(624,356,596,396))
wallList.append(Wall(744,491,624,356))
wallList.append(Wall(689,547,744,491))
wallList.append(Wall(596,396,689,547))


wallList.append(Wall(684,289,630,344))
wallList.append(Wall(753,369,684,289))
wallList.append(Wall(729,398,753,369))
wallList.append(Wall(758,431,729,398))
wallList.append(Wall(788,404,758,431))
wallList.append(Wall(806,426,788,404))
wallList.append(Wall(755,481,806,426))
wallList.append(Wall(630,344,755,481))


wallList.append(Wall(762,375,746,398))
wallList.append(Wall(778,397,762,375))
wallList.append(Wall(760,416,778,397))
wallList.append(Wall(746,398,760,416))


wallList.append(Wall(716,259,693,281))
wallList.append(Wall(838,397,716,259))
wallList.append(Wall(817,421,838,397))
wallList.append(Wall(693,281,817,421))


wallList.append(Wall(696,236,596,270))
wallList.append(Wall(707,250,696,236))
wallList.append(Wall(621,343,707,250))
wallList.append(Wall(596,270,621,343))


wallList.append(Wall(571,191,515,177))
wallList.append(Wall(571,231,571,191))
wallList.append(Wall(526,243,571,231))
wallList.append(Wall(499,239,526,243))
wallList.append(Wall(515,177,499,239))


wallList.append(Wall(519,254,476,251))
wallList.append(Wall(574,243,519,254))
wallList.append(Wall(605,344,574,243))
wallList.append(Wall(481,296,605,344))
wallList.append(Wall(497,261,481,296))
wallList.append(Wall(476,251,497,261))


wallList.append(Wall(689,43,565,55))
wallList.append(Wall(763,50,689,43))
wallList.append(Wall(806,130,763,50))
wallList.append(Wall(809,152,806,130))
wallList.append(Wall(698,220,809,152))
wallList.append(Wall(594,259,698,220))
wallList.append(Wall(587,238,594,259))
wallList.append(Wall(581,122,587,238))
wallList.append(Wall(565,55,581,122))


wallList.append(Wall(50,758,38,775))
wallList.append(Wall(132,741,50,758))
wallList.append(Wall(226,696,132,741))
wallList.append(Wall(237,674,226,696))
wallList.append(Wall(261,709,237,674))
wallList.append(Wall(201,746,261,709))
wallList.append(Wall(70,811,201,746))
wallList.append(Wall(45,800,70,811))
wallList.append(Wall(38,775,45,800))


wallList.append(Wall(228,748,101,809))
wallList.append(Wall(268,720,228,748))
wallList.append(Wall(307,775,268,720))
wallList.append(Wall(151,873,307,775))
wallList.append(Wall(101,809,151,873))


wallList.append(Wall(524,580,469,568))
wallList.append(Wall(522,589,524,580))
wallList.append(Wall(539,644,522,589))
wallList.append(Wall(521,646,539,644))
wallList.append(Wall(497,660,521,646))
wallList.append(Wall(469,568,497,660))


wallList.append(Wall(626,547,533,581))
wallList.append(Wall(690,662,626,547))
wallList.append(Wall(574,731,690,662))
wallList.append(Wall(529,591,574,731))
wallList.append(Wall(533,581,529,591))


wallList.append(Wall(682,563,653,576))
wallList.append(Wall(744,676,682,563))
wallList.append(Wall(702,698,744,676))
wallList.append(Wall(689,673,702,698))
wallList.append(Wall(702,662,689,673))
wallList.append(Wall(653,576,702,662))


wallList.append(Wall(754,499,696,555))
wallList.append(Wall(858,617,754,499))
wallList.append(Wall(769,709,858,617))
wallList.append(Wall(758,676,769,709))
wallList.append(Wall(696,555,758,676))


wallList.append(Wall(94,823,76,827))
wallList.append(Wall(148,887,94,823))
wallList.append(Wall(313,785,148,887))
wallList.append(Wall(359,839,313,785))
wallList.append(Wall(169,914,359,839))
wallList.append(Wall(118,882,169,914))
wallList.append(Wall(76,827,118,882))


wallList.append(Wall(815,438,762,490))
wallList.append(Wall(916,555,815,438))
wallList.append(Wall(866,608,916,555))
wallList.append(Wall(762,490,866,608))


wallList.append(Wall(847,408,826,429))
wallList.append(Wall(913,496,847,408))
wallList.append(Wall(896,515,913,496))
wallList.append(Wall(826,429,896,515))


wallList.append(Wall(923,504,901,521))
wallList.append(Wall(982,574,923,504))
wallList.append(Wall(964,592,982,574))
wallList.append(Wall(901,521,964,592))


wallList.append(Wall(822,155,704,231))
wallList.append(Wall(777,50,822,155))
wallList.append(Wall(819,44,777,50))
wallList.append(Wall(942,334,819,44))
wallList.append(Wall(1051,463,942,334))
wallList.append(Wall(1026,468,1051,463))
wallList.append(Wall(1009,447,1026,468))
wallList.append(Wall(969,449,1009,447))
wallList.append(Wall(924,485,969,449))
wallList.append(Wall(780,299,924,485))
wallList.append(Wall(704,231,780,299))


wallList.append(Wall(951,0,672,0))
wallList.append(Wall(980,79,951,0))
wallList.append(Wall(971,188,980,79))
wallList.append(Wall(1006,330,971,188))
wallList.append(Wall(1135,455,1006,330))
wallList.append(Wall(1144,506,1135,455))
wallList.append(Wall(1121,549,1144,506))
wallList.append(Wall(928,678,1121,549))
wallList.append(Wall(876,619,928,678))
wallList.append(Wall(923,565,876,619))
wallList.append(Wall(962,604,923,565))
wallList.append(Wall(1025,549,962,604))
wallList.append(Wall(1030,478,1025,549))
wallList.append(Wall(1053,472,1030,478))
wallList.append(Wall(1063,461,1053,472))
wallList.append(Wall(946,329,1063,461))
wallList.append(Wall(828,39,946,329))
wallList.append(Wall(769,42,828,39))
wallList.append(Wall(685,28,769,42))
wallList.append(Wall(562,44,685,28))
wallList.append(Wall(566,23,562,44))
wallList.append(Wall(672,0,566,23))


wallList.append(Wall(1250,0,967,0))
wallList.append(Wall(1250,750,1250,0))
wallList.append(Wall(1128,777,1250,750))
wallList.append(Wall(946,929,1128,777))
wallList.append(Wall(825,780,946,929))
wallList.append(Wall(1003,641,825,780))
wallList.append(Wall(1146,548,1003,641))
wallList.append(Wall(1157,492,1146,548))
wallList.append(Wall(1145,446,1157,492))
wallList.append(Wall(1021,319,1145,446))
wallList.append(Wall(991,246,1021,319))
wallList.append(Wall(993,76,991,246))
wallList.append(Wall(967,0,993,76))


wallList.append(Wall(864,627,779,719))
wallList.append(Wall(917,688,864,627))
wallList.append(Wall(816,771,917,688))
wallList.append(Wall(791,747,816,771))
wallList.append(Wall(779,719,791,747))


wallList.append(Wall(22,793,0,793))
wallList.append(Wall(67,829,22,793))
wallList.append(Wall(115,889,67,829))
wallList.append(Wall(231,962,115,889))
wallList.append(Wall(238,1000,231,962))
wallList.append(Wall(0,1000,238,1000))
wallList.append(Wall(0,793,0,1000))


wallList.append(Wall(366,749,326,777))
wallList.append(Wall(379,770,366,749))
wallList.append(Wall(399,768,379,770))
wallList.append(Wall(412,775,399,768))
wallList.append(Wall(423,815,412,775))
wallList.append(Wall(371,837,423,815))
wallList.append(Wall(326,777,371,837))


wallList.append(Wall(490,677,375,745))
wallList.append(Wall(512,723,490,677))
wallList.append(Wall(415,766,512,723))
wallList.append(Wall(401,759,415,766))
wallList.append(Wall(386,759,401,759))
wallList.append(Wall(375,745,386,759))


wallList.append(Wall(539,652,501,668))
wallList.append(Wall(569,735,539,652))
wallList.append(Wall(568,747,569,735))
wallList.append(Wall(550,759,568,747))
wallList.append(Wall(523,718,550,759))
wallList.append(Wall(501,668,523,718))


wallList.append(Wall(519,735,421,779))
wallList.append(Wall(539,766,519,735))
wallList.append(Wall(434,809,539,766))
wallList.append(Wall(421,779,434,809))


wallList.append(Wall(543,774,176,920))
wallList.append(Wall(556,799,543,774))
wallList.append(Wall(235,957,556,799))
wallList.append(Wall(176,920,235,957))


wallList.append(Wall(575,750,551,767))
wallList.append(Wall(618,713,575,750))
wallList.append(Wall(710,852,618,713))
wallList.append(Wall(581,954,710,852))
wallList.append(Wall(567,791,581,954))
wallList.append(Wall(551,767,567,791))


wallList.append(Wall(678,680,635,707))
wallList.append(Wall(712,748,678,680))
wallList.append(Wall(674,770,712,748))
wallList.append(Wall(635,707,674,770))


wallList.append(Wall(747,685,708,708))
wallList.append(Wall(787,760,747,685))
wallList.append(Wall(728,747,787,760))
wallList.append(Wall(708,708,728,747))


wallList.append(Wall(723,756,674,784))
wallList.append(Wall(794,773,723,756))
wallList.append(Wall(803,782,794,773))
wallList.append(Wall(720,846,803,782))
wallList.append(Wall(674,784,720,846))


wallList.append(Wall(437,860,235,959))
wallList.append(Wall(547,1000,437,860))
wallList.append(Wall(254,1000,547,1000))
wallList.append(Wall(235,959,254,1000))


wallList.append(Wall(556,806,452,858))
wallList.append(Wall(562,901,556,806))
wallList.append(Wall(513,937,562,901))
wallList.append(Wall(452,858,513,937))


wallList.append(Wall(565,915,520,946))
wallList.append(Wall(567,963,565,915))
wallList.append(Wall(541,972,567,963))
wallList.append(Wall(520,946,541,972))


wallList.append(Wall(568,977,550,982))
wallList.append(Wall(573,999,568,977))
wallList.append(Wall(569,999,573,999))
wallList.append(Wall(550,982,569,999))


wallList.append(Wall(633,934,583,970))
wallList.append(Wall(688,1000,633,934))
wallList.append(Wall(584,1000,688,1000))
wallList.append(Wall(583,970,584,1000))


wallList.append(Wall(729,856,643,926))
wallList.append(Wall(781,926,729,856))
wallList.append(Wall(699,994,781,926))
wallList.append(Wall(643,926,699,994))


wallList.append(Wall(815,791,734,850))
wallList.append(Wall(871,855,815,791))
wallList.append(Wall(788,923,871,855))
wallList.append(Wall(734,850,788,923))


wallList.append(Wall(878,865,795,932))
wallList.append(Wall(932,935,878,865))
wallList.append(Wall(854,1000,932,935))
wallList.append(Wall(795,932,854,1000))


wallList.append(Wall(1036,870,955,937))
wallList.append(Wall(1100,949,1036,870))
wallList.append(Wall(1036,1000,1100,949))
wallList.append(Wall(1007,1000,1036,1000))
wallList.append(Wall(955,937,1007,1000))


wallList.append(Wall(1127,796,1045,861))
wallList.append(Wall(1190,875,1127,796))
wallList.append(Wall(1107,938,1190,875))
wallList.append(Wall(1045,861,1107,938))


wallList.append(Wall(1250,763,1139,789))
wallList.append(Wall(1250,829,1250,763))
wallList.append(Wall(1199,868,1250,829))
wallList.append(Wall(1139,789,1199,868))


wallList.append(Wall(786,937,710,1000))
wallList.append(Wall(845,1000,786,937))
wallList.append(Wall(710,1000,845,1000))


wallList.append(Wall(942,945,877,1000))
wallList.append(Wall(990,1000,942,945))
wallList.append(Wall(877,1000,990,1000))


wallList.append(Wall(1104,957,1051,1000))
wallList.append(Wall(1140,1000,1104,957))
wallList.append(Wall(1051,1000,1140,1000))


wallList.append(Wall(1197,885,1114,947))
wallList.append(Wall(1250,945,1197,885))
wallList.append(Wall(1250,1000,1250,945))
wallList.append(Wall(1157,1000,1250,1000))
wallList.append(Wall(1114,947,1157,1000))


wallList.append(Wall(1250,841,1207,873))
wallList.append(Wall(1250,921,1250,841))
wallList.append(Wall(1250,921,1207,873))

NYC by Kevin

wallList.append(Wall(406,0,274,0))
wallList.append(Wall(375,60,406,0))
wallList.append(Wall(274,1,375,60))
wallList.append(Wall(274,0,274,1))

wallList.append(Wall(360,81,217,3))
wallList.append(Wall(322,147,360,81))
wallList.append(Wall(52,0,322,147))
wallList.append(Wall(217,3,52,0))

wallList.append(Wall(310,173,32,21))
wallList.append(Wall(274,241,310,173))
wallList.append(Wall(0,93,274,241))
wallList.append(Wall(32,21,0,93))

wallList.append(Wall(258,262,0,125))
wallList.append(Wall(221,332,258,262))
wallList.append(Wall(0,209,221,332))
wallList.append(Wall(0,125,0,209))

wallList.append(Wall(206,357,0,240))
wallList.append(Wall(170,426,206,357))
wallList.append(Wall(0,330,170,426))
wallList.append(Wall(0,240,0,330))

wallList.append(Wall(150,462,0,379))
wallList.append(Wall(61,621,150,462))
wallList.append(Wall(0,586,61,621))
wallList.append(Wall(0,379,0,586))

wallList.append(Wall(48,643,0,619))
wallList.append(Wall(11,706,48,643))
wallList.append(Wall(0,704,11,706))
wallList.append(Wall(0,619,0,704))

wallList.append(Wall(652,0,482,0))
wallList.append(Wall(705,34,652,0))
wallList.append(Wall(689,107,705,34))
wallList.append(Wall(482,0,689,107))

wallList.append(Wall(682,140,451,15))
wallList.append(Wall(659,215,682,140))
wallList.append(Wall(410,81,659,215))
wallList.append(Wall(451,15,410,81))

wallList.append(Wall(651,244,398,105))
wallList.append(Wall(631,318,651,244))
wallList.append(Wall(361,174,631,318))
wallList.append(Wall(398,105,361,174))

wallList.append(Wall(622,347,351,196))
wallList.append(Wall(589,412,622,347))
wallList.append(Wall(316,268,589,412))
wallList.append(Wall(351,196,316,268))

wallList.append(Wall(576,442,298,288))
wallList.append(Wall(536,510,576,442))
wallList.append(Wall(259,356,536,510))
wallList.append(Wall(298,288,259,356))

wallList.append(Wall(523,531,249,378))
wallList.append(Wall(485,598,523,531))
wallList.append(Wall(210,443,485,598))
wallList.append(Wall(249,378,210,443))

wallList.append(Wall(465,639,236,512))
wallList.append(Wall(449,670,465,639))
wallList.append(Wall(405,646,449,670))
wallList.append(Wall(382,680,405,646))
wallList.append(Wall(239,597,382,680))
wallList.append(Wall(258,563,239,597))
wallList.append(Wall(223,545,258,563))
wallList.append(Wall(236,512,223,545))

wallList.append(Wall(187,604,138,570))
wallList.append(Wall(172,632,187,604))
wallList.append(Wall(253,685,172,632))
wallList.append(Wall(278,652,253,685))
wallList.append(Wall(410,727,278,652))
wallList.append(Wall(373,789,410,727))
wallList.append(Wall(101,642,373,789))
wallList.append(Wall(138,570,101,642))

wallList.append(Wall(361,816,88,666))
wallList.append(Wall(331,883,361,816))
wallList.append(Wall(50,729,331,883))
wallList.append(Wall(88,666,50,729))

wallList.append(Wall(316,912,40,757))
wallList.append(Wall(281,975,316,912))
wallList.append(Wall(0,823,281,975))
wallList.append(Wall(40,757,0,823))

wallList.append(Wall(261,1000,0,853))
wallList.append(Wall(98,1000,261,1000))
wallList.append(Wall(0,938,98,1000))
wallList.append(Wall(0,853,0,938))

wallList.append(Wall(47,1000,0,972))
wallList.append(Wall(0,1000,47,1000))
wallList.append(Wall(0,972,0,1000))

wallList.append(Wall(821,0,768,0))
wallList.append(Wall(792,49,821,0))
wallList.append(Wall(759,33,792,49))
wallList.append(Wall(768,0,759,33))

wallList.append(Wall(728,0,704,0))
wallList.append(Wall(720,10,728,0))
wallList.append(Wall(704,0,720,10))

wallList.append(Wall(776,74,752,60))
wallList.append(Wall(738,135,776,74))
wallList.append(Wall(726,129,738,135))
wallList.append(Wall(752,60,726,129))

wallList.append(Wall(1046,0,998,0))
wallList.append(Wall(1146,56,1046,0))
wallList.append(Wall(1126,96,1146,56))
wallList.append(Wall(983,31,1126,96))
wallList.append(Wall(998,0,983,31))

wallList.append(Wall(1094,149,867,0))
wallList.append(Wall(1072,195,1094,149))
wallList.append(Wall(832,70,1072,195))
wallList.append(Wall(867,0,832,70))

wallList.append(Wall(1063,248,819,97))
wallList.append(Wall(1059,310,1063,248))
wallList.append(Wall(779,162,1059,310))
wallList.append(Wall(819,97,779,162))

wallList.append(Wall(1036,345,766,186))
wallList.append(Wall(1006,399,1036,345))
wallList.append(Wall(729,250,1006,399))
wallList.append(Wall(766,186,729,250))

wallList.append(Wall(990,436,711,278))
wallList.append(Wall(957,498,990,436))
wallList.append(Wall(675,344,957,498))
wallList.append(Wall(711,278,675,344))

wallList.append(Wall(932,525,666,377))
wallList.append(Wall(903,583,932,525))
wallList.append(Wall(643,445,903,583))
wallList.append(Wall(666,377,643,445))

wallList.append(Wall(888,613,640,475))
wallList.append(Wall(859,681,888,613))
wallList.append(Wall(600,547,859,681))
wallList.append(Wall(640,475,600,547))

wallList.append(Wall(545,633,560,554))
wallList.append(Wall(514,620,545,633))
wallList.append(Wall(560,554,514,620))

wallList.append(Wall(534,675,505,661))
wallList.append(Wall(513,747,534,675))
wallList.append(Wall(468,723,513,747))
wallList.append(Wall(505,661,468,723))

wallList.append(Wall(507,780,455,750))
wallList.append(Wall(489,855,507,780))
wallList.append(Wall(421,815,489,855))
wallList.append(Wall(455,750,421,815))

wallList.append(Wall(472,878,416,849))
wallList.append(Wall(441,945,472,878))
wallList.append(Wall(383,912,441,945))
wallList.append(Wall(416,849,383,912))

wallList.append(Wall(449,981,352,932))
wallList.append(Wall(447,1000,449,981))
wallList.append(Wall(314,1000,447,1000))
wallList.append(Wall(352,932,314,1000))

wallList.append(Wall(1200,0,1158,0))
wallList.append(Wall(1190,17,1200,0))
wallList.append(Wall(1158,0,1190,17))

wallList.append(Wall(1250,95,1235,87))
wallList.append(Wall(1250,180,1250,95))
wallList.append(Wall(1195,154,1250,180))
wallList.append(Wall(1235,87,1195,154))

wallList.append(Wall(1250,214,1183,178))
wallList.append(Wall(1250,300,1250,214))
wallList.append(Wall(1150,246,1250,300))
wallList.append(Wall(1183,178,1150,246))

wallList.append(Wall(1250,330,1131,269))
wallList.append(Wall(1250,420,1250,330))
wallList.append(Wall(1096,340,1250,420))
wallList.append(Wall(1131,269,1096,340))

wallList.append(Wall(1250,454,1083,359))
wallList.append(Wall(1250,543,1250,454))
wallList.append(Wall(1038,432,1250,543))
wallList.append(Wall(1083,359,1038,432))

wallList.append(Wall(1250,576,1033,459))
wallList.append(Wall(1250,661,1250,576))
wallList.append(Wall(1002,519,1250,661))
wallList.append(Wall(1033,459,1002,519))

wallList.append(Wall(1250,693,982,542))
wallList.append(Wall(1250,782,1250,693))
wallList.append(Wall(946,617,1250,782))
wallList.append(Wall(982,542,946,617))

wallList.append(Wall(1250,813,930,637))
wallList.append(Wall(1213,883,1250,813))
wallList.append(Wall(893,703,1213,883))
wallList.append(Wall(930,637,893,703))

wallList.append(Wall(936,801,859,759))
wallList.append(Wall(951,771,936,801))
wallList.append(Wall(1198,902,951,771))
wallList.append(Wall(1161,972,1198,902))
wallList.append(Wall(843,801,1161,972))
wallList.append(Wall(859,759,843,801))

wallList.append(Wall(1135,1000,823,835))
wallList.append(Wall(733,1000,1135,1000))
wallList.append(Wall(823,835,733,1000))

wallList.append(Wall(840,708,600,574))
wallList.append(Wall(804,774,840,708))
wallList.append(Wall(585,653,804,774))
wallList.append(Wall(600,574,585,653))

wallList.append(Wall(779,811,572,695))
wallList.append(Wall(739,873,779,811))
wallList.append(Wall(555,771,739,873))
wallList.append(Wall(572,695,555,771))

wallList.append(Wall(730,903,547,799))
wallList.append(Wall(693,971,730,903))
wallList.append(Wall(530,877,693,971))
wallList.append(Wall(547,799,530,877))

wallList.append(Wall(686,1000,522,903))
wallList.append(Wall(530,1000,686,1000))
wallList.append(Wall(501,985,530,1000))
wallList.append(Wall(522,903,501,985))

wallList.append(Wall(1250,935,1237,9926))
wallList.append(Wall(1250,1000,1250,935))
wallList.append(Wall(1200,1000,1250,1000))
wallList.append(Wall(1237,9926,1200,1000))

Jackson, Florida

#Jackson by Ethan
wallList.append(Wall(83,19,16,0))
wallList.append(Wall(83,106,83,19))
wallList.append(Wall(16,107,83,106))
wallList.append(Wall(16,0,16,107))

wallList.append(Wall(256,27,98,29))
wallList.append(Wall(256,110,256,27))
wallList.append(Wall(98,109,256,110))
wallList.append(Wall(98,29,98,109))

wallList.append(Wall(375,27,278,27))
wallList.append(Wall(375,110,375,27))
wallList.append(Wall(278,109,375,110))
wallList.append(Wall(278,27,278,109))

wallList.append(Wall(285,979,285,999))
wallList.append(Wall(377,964,285,979))
wallList.append(Wall(377,999,377,964))
wallList.append(Wall(285,999,377,999))

wallList.append(Wall(394,959,394,999))
wallList.append(Wall(496,929,394,959))
wallList.append(Wall(496,999,496,929))
wallList.append(Wall(394,999,496,999))

wallList.append(Wall(510,929,510,999))
wallList.append(Wall(614,892,510,929))
wallList.append(Wall(614,976,614,892))
wallList.append(Wall(545,999,614,976))
wallList.append(Wall(510,999,545,999))

wallList.append(Wall(395,938,395,870))
wallList.append(Wall(497,904,395,938))
wallList.append(Wall(497,870,497,904))
wallList.append(Wall(395,870,497,870))

wallList.append(Wall(508,902,508,779))
wallList.append(Wall(612,868,508,902))
wallList.append(Wall(612,779,612,868))
wallList.append(Wall(508,779,612,779))

wallList.append(Wall(494,25,393,25))
wallList.append(Wall(494,108,494,25))
wallList.append(Wall(393,108,494,108))
wallList.append(Wall(393,25,393,108))

wallList.append(Wall(606,25,508,25))
wallList.append(Wall(606,105,606,25))
wallList.append(Wall(508,105,606,105))
wallList.append(Wall(508,25,508,105))

wallList.append(Wall(726,25,624,25))
wallList.append(Wall(726,104,726,25))
wallList.append(Wall(624,104,726,104))
wallList.append(Wall(624,25,624,104))

wallList.append(Wall(964,18,740,22))
wallList.append(Wall(964,101,964,18))
wallList.append(Wall(740,106,964,101))
wallList.append(Wall(740,22,740,106))

wallList.append(Wall(1110,16,976,18))
wallList.append(Wall(1110,102,1110,16))
wallList.append(Wall(976,102,1110,102))
wallList.append(Wall(976,18,976,102))

wallList.append(Wall(1229,18,1132,18))
wallList.append(Wall(1229,101,1229,18))
wallList.append(Wall(1132,101,1229,101))
wallList.append(Wall(1132,18,1132,101))

wallList.append(Wall(145,134,15,135))
wallList.append(Wall(145,217,145,134))
wallList.append(Wall(15,220,145,217))
wallList.append(Wall(15,135,15,220))

wallList.append(Wall(257,134,157,134))
wallList.append(Wall(257,216,257,134))
wallList.append(Wall(157,216,257,216))
wallList.append(Wall(157,134,157,216))

wallList.append(Wall(260,245,15,245))
wallList.append(Wall(260,544,260,245))
wallList.append(Wall(15,544,260,544))
wallList.append(Wall(15,245,15,544))

wallList.append(Wall(95,559,22,559))
wallList.append(Wall(95,641,95,559))
wallList.append(Wall(22,641,95,641))
wallList.append(Wall(22,559,22,641))

wallList.append(Wall(179,669,22,669))
wallList.append(Wall(179,748,179,669))
wallList.append(Wall(22,748,179,748))
wallList.append(Wall(22,669,22,748))

wallList.append(Wall(260,671,192,671))
wallList.append(Wall(260,752,260,671))
wallList.append(Wall(192,752,260,752))
wallList.append(Wall(192,671,192,752))

wallList.append(Wall(262,558,109,558))
wallList.append(Wall(262,645,262,558))
wallList.append(Wall(109,645,262,645))
wallList.append(Wall(109,558,109,645))

wallList.append(Wall(118,775,23,775))
wallList.append(Wall(118,857,118,775))
wallList.append(Wall(23,857,118,857))
wallList.append(Wall(23,775,23,857))

wallList.append(Wall(261,776,129,776))
wallList.append(Wall(261,857,261,776))
wallList.append(Wall(129,857,261,857))
wallList.append(Wall(129,776,129,857))

wallList.append(Wall(123,873,21,873))
wallList.append(Wall(123,957,123,873))
wallList.append(Wall(21,957,123,957))
wallList.append(Wall(21,873,21,957))

wallList.append(Wall(264,873,135,873))
wallList.append(Wall(264,957,264,873))
wallList.append(Wall(135,957,264,957))
wallList.append(Wall(135,873,135,957))

wallList.append(Wall(266,978,0,984))
wallList.append(Wall(266,1000,266,978))
wallList.append(Wall(0,1000,266,1000))
wallList.append(Wall(0,984,0,1000))

wallList.append(Wall(374,133,276,133))
wallList.append(Wall(374,215,374,133))
wallList.append(Wall(276,215,374,215))
wallList.append(Wall(276,133,276,215))

wallList.append(Wall(375,241,277,241))
wallList.append(Wall(375,329,375,241))
wallList.append(Wall(277,329,375,329))
wallList.append(Wall(277,241,277,329))

wallList.append(Wall(374,345,278,345))
wallList.append(Wall(374,435,374,345))
wallList.append(Wall(278,435,374,435))
wallList.append(Wall(278,345,278,435))

wallList.append(Wall(123,873,21,873))
wallList.append(Wall(123,957,123,873))
wallList.append(Wall(21,957,123,957))
wallList.append(Wall(21,873,21,957))

wallList.append(Wall(376,451,277,451))
wallList.append(Wall(376,543,376,451))
wallList.append(Wall(277,543,376,543))
wallList.append(Wall(277,451,277,543))

wallList.append(Wall(123,873,21,873))
wallList.append(Wall(123,957,123,873))
wallList.append(Wall(21,957,123,957))
wallList.append(Wall(21,873,21,957))

wallList.append(Wall(375,558,280,558))
wallList.append(Wall(375,646,375,558))
wallList.append(Wall(280,646,375,646))
wallList.append(Wall(280,558,280,646))

wallList.append(Wall(372,669,279,669))
wallList.append(Wall(372,755,372,669))
wallList.append(Wall(279,755,372,755))
wallList.append(Wall(279,669,279,755))

wallList.append(Wall(376,778,282,778))
wallList.append(Wall(376,855,376,778))
wallList.append(Wall(282,855,376,855))
wallList.append(Wall(282,778,282,855))

wallList.append(Wall(379,870,283,870))
wallList.append(Wall(379,941,379,870))
wallList.append(Wall(283,957,379,941))
wallList.append(Wall(283,870,283,957))

wallList.append(Wall(497,781,395,778))
wallList.append(Wall(497,857,497,781))
wallList.append(Wall(395,857,497,857))
wallList.append(Wall(395,778,395,857))

wallList.append(Wall(610,558,394,558))
wallList.append(Wall(610,755,610,558))
wallList.append(Wall(394,755,610,755))
wallList.append(Wall(394,558,394,755))

wallList.append(Wall(493,133,393,133))
wallList.append(Wall(493,215,493,133))
wallList.append(Wall(393,215,493,215))
wallList.append(Wall(393,133,393,215))

wallList.append(Wall(492,240,394,240))
wallList.append(Wall(492,329,492,240))
wallList.append(Wall(394,329,492,329))
wallList.append(Wall(394,240,394,329))

wallList.append(Wall(493,345,394,345))
wallList.append(Wall(493,435,493,345))
wallList.append(Wall(394,435,493,435))
wallList.append(Wall(394,345,394,435))

wallList.append(Wall(493,451,394,451))
wallList.append(Wall(493,544,493,451))
wallList.append(Wall(394,544,493,544))
wallList.append(Wall(394,451,394,544))

wallList.append(Wall(606,135,506,135))
wallList.append(Wall(606,215,606,135))
wallList.append(Wall(506,215,606,215))
wallList.append(Wall(506,135,506,215))

wallList.append(Wall(610,239,507,239))
wallList.append(Wall(610,329,610,239))
wallList.append(Wall(507,329,610,329))
wallList.append(Wall(507,239,507,329))

wallList.append(Wall(610,345,507,345))
wallList.append(Wall(610,435,610,345))
wallList.append(Wall(507,435,610,435))
wallList.append(Wall(507,345,507,435))

wallList.append(Wall(611,453,507,453))
wallList.append(Wall(611,542,611,453))
wallList.append(Wall(507,542,611,542))
wallList.append(Wall(507,453,507,542))

wallList.append(Wall(728,132,626,132))
wallList.append(Wall(728,213,728,132))
wallList.append(Wall(625,213,728,213))
wallList.append(Wall(626,132,625,213))

wallList.append(Wall(728,237,626,237))
wallList.append(Wall(728,327,728,237))
wallList.append(Wall(625,327,728,327))
wallList.append(Wall(626,237,625,327))

wallList.append(Wall(728,343,626,343))
wallList.append(Wall(728,435,728,343))
wallList.append(Wall(625,435,728,435))
wallList.append(Wall(626,343,625,435))

wallList.append(Wall(728,450,622,450))
wallList.append(Wall(728,543,728,450))
wallList.append(Wall(622,543,728,543))
wallList.append(Wall(622,450,622,543))

wallList.append(Wall(728,557,626,557))
wallList.append(Wall(728,649,728,557))
wallList.append(Wall(625,649,728,649))
wallList.append(Wall(626,557,625,649))

wallList.append(Wall(728,779,626,779))
wallList.append(Wall(728,864,728,779))
wallList.append(Wall(625,866,728,864))
wallList.append(Wall(626,779,625,866))

wallList.append(Wall(728,666,626,666))
wallList.append(Wall(728,755,728,666))
wallList.append(Wall(625,755,728,755))
wallList.append(Wall(626,666,625,755))

wallList.append(Wall(728,886,626,886))
wallList.append(Wall(728,974,728,886))
wallList.append(Wall(625,974,728,974))
wallList.append(Wall(626,886,625,974))

wallList.append(Wall(847,128,741,128))
wallList.append(Wall(847,214,847,128))
wallList.append(Wall(741,214,847,214))
wallList.append(Wall(741,128,741,214))

wallList.append(Wall(847,237,741,237))
wallList.append(Wall(847,328,847,237))
wallList.append(Wall(741,328,847,328))
wallList.append(Wall(741,237,741,328))

wallList.append(Wall(847,343,741,343))
wallList.append(Wall(847,434,847,343))
wallList.append(Wall(741,434,847,434))
wallList.append(Wall(741,343,741,434))

wallList.append(Wall(847,449,741,449))
wallList.append(Wall(847,543,847,449))
wallList.append(Wall(741,543,847,543))
wallList.append(Wall(741,449,741,543))

wallList.append(Wall(847,559,741,559))
wallList.append(Wall(847,648,847,559))
wallList.append(Wall(741,648,847,648))
wallList.append(Wall(741,559,741,648))

wallList.append(Wall(847,663,741,663))
wallList.append(Wall(847,754,847,663))
wallList.append(Wall(741,754,847,754))
wallList.append(Wall(741,663,741,754))

wallList.append(Wall(847,780,741,780))
wallList.append(Wall(847,864,847,780))
wallList.append(Wall(741,864,847,864))
wallList.append(Wall(741,780,741,864))

wallList.append(Wall(847,885,741,885))
wallList.append(Wall(850,974,847,885))
wallList.append(Wall(741,974,850,974))
wallList.append(Wall(741,885,741,974))

wallList.append(Wall(962,124,860,124))
wallList.append(Wall(962,211,962,124))
wallList.append(Wall(860,211,962,211))
wallList.append(Wall(860,124,860,211))

wallList.append(Wall(962,234,860,234))
wallList.append(Wall(962,324,962,234))
wallList.append(Wall(860,324,962,324))
wallList.append(Wall(860,234,860,324))

wallList.append(Wall(962,343,860,343))
wallList.append(Wall(962,434,962,343))
wallList.append(Wall(860,434,962,434))
wallList.append(Wall(860,343,860,434))

wallList.append(Wall(962,448,860,448))
wallList.append(Wall(962,546,962,448))
wallList.append(Wall(860,546,962,546))
wallList.append(Wall(860,448,860,546))

wallList.append(Wall(962,665,860,665))
wallList.append(Wall(962,758,962,665))
wallList.append(Wall(860,758,962,758))
wallList.append(Wall(860,665,860,758))

wallList.append(Wall(962,448,860,448))
wallList.append(Wall(962,546,962,448))
wallList.append(Wall(860,546,962,546))
wallList.append(Wall(860,448,860,546))

wallList.append(Wall(968,780,860,780))
wallList.append(Wall(968,861,968,780))
wallList.append(Wall(860,861,968,861))
wallList.append(Wall(860,780,860,861))

wallList.append(Wall(968,886,860,886))
wallList.append(Wall(968,974,968,886))
wallList.append(Wall(860,974,968,974))
wallList.append(Wall(860,886,860,974))

wallList.append(Wall(1112,124,975,124))
wallList.append(Wall(1112,211,1112,124))
wallList.append(Wall(975,211,1112,211))
wallList.append(Wall(975,124,975,211))

wallList.append(Wall(1112,233,975,233))
wallList.append(Wall(1112,326,1112,233))
wallList.append(Wall(975,326,1112,326))
wallList.append(Wall(975,233,975,326))

wallList.append(Wall(1112,340,975,340))
wallList.append(Wall(1112,433,1112,340))
wallList.append(Wall(975,433,1112,433))
wallList.append(Wall(975,340,975,433))

wallList.append(Wall(1112,448,975,448))
wallList.append(Wall(1112,540,1112,448))
wallList.append(Wall(975,540,1112,540))
wallList.append(Wall(975,448,975,540))

wallList.append(Wall(1112,556,975,556))
wallList.append(Wall(1112,650,1112,556))
wallList.append(Wall(975,650,1112,650))
wallList.append(Wall(975,556,975,650))

wallList.append(Wall(1112,661,980,661))
wallList.append(Wall(1112,755,1112,661))
wallList.append(Wall(980,755,1112,755))
wallList.append(Wall(980,661,980,755))

wallList.append(Wall(1115,776,980,776))
wallList.append(Wall(1115,862,1115,776))
wallList.append(Wall(980,862,1115,862))
wallList.append(Wall(980,776,980,862))

wallList.append(Wall(1115,885,980,885))
wallList.append(Wall(1115,975,1115,885))
wallList.append(Wall(980,975,1115,975))
wallList.append(Wall(980,885,980,975))

wallList.append(Wall(1231,124,1131,124))
wallList.append(Wall(1231,209,1231,124))
wallList.append(Wall(1131,209,1231,209))
wallList.append(Wall(1131,124,1131,209))

wallList.append(Wall(1231,233,1131,233))
wallList.append(Wall(1231,325,1231,233))
wallList.append(Wall(1131,325,1231,325))
wallList.append(Wall(1131,233,1131,325))

wallList.append(Wall(1231,340,1131,340))
wallList.append(Wall(1231,432,1231,340))
wallList.append(Wall(1131,432,1231,432))
wallList.append(Wall(1131,340,1131,432))

wallList.append(Wall(1231,124,1131,124))
wallList.append(Wall(1231,209,1231,124))
wallList.append(Wall(1131,209,1231,209))
wallList.append(Wall(1131,124,1131,209))

wallList.append(Wall(1231,124,1131,124))
wallList.append(Wall(1231,209,1231,124))
wallList.append(Wall(1131,209,1231,209))
wallList.append(Wall(1131,124,1131,209))

wallList.append(Wall(1231,445,1131,445))
wallList.append(Wall(1231,539,1231,445))
wallList.append(Wall(1131,539,1231,539))
wallList.append(Wall(1131,445,1131,539))

wallList.append(Wall(1235,663,1135,663))
wallList.append(Wall(1235,750,1235,663))
wallList.append(Wall(1135,750,1235,750))
wallList.append(Wall(1135,663,1135,750))

wallList.append(Wall(1235,774,1135,774))
wallList.append(Wall(1235,861,1235,774))
wallList.append(Wall(1135,861,1235,861))
wallList.append(Wall(1135,774,1135,861))

wallList.append(Wall(1235,884,1135,884))
wallList.append(Wall(1235,971,1235,884))
wallList.append(Wall(1135,971,1235,971))
wallList.append(Wall(1135,884,1135,971))

wallList.append(Wall(1235,555,1167,555))
wallList.append(Wall(1235,599,1235,555))
wallList.append(Wall(1167,599,1235,599))
wallList.append(Wall(1167,555,1167,599))

wallList.append(Wall(1235,599,1201,599))
wallList.append(Wall(1235,647,1235,599))
wallList.append(Wall(1201,647,1235,647))
wallList.append(Wall(1201,647,1201,599))

--

--