Professional Documents
Culture Documents
CS 186 Discussion 5
CS 186 Discussion 5
com/yxltttyr
Discussion 5
Sorting & Hashing
1 data page: 6, 1
1 data page: 25, 20
6, 1, 25, 20, 0, 10, 9, 17
1 data page: 0, 10
1 data page: 9, 17
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 4
General External Merge Sort
B=4, N=8: Pass 0, Run 1
In-memory sort
1 data page: 6, 1
1 data page: 25, 20
0, 1, 6, 9, 10, 17, 20, 25
1 data page: 0, 10
1 data page: 9, 17
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 8
General External Merge Sort
B=4, N=8: Pass 0, Run 1
Write 4 pages to disk: 4 IOs
1 data page: 6, 1
1 sorted run of 4 pages
1 data page: 25, 20
0, 1, 6, 9, 10, 17, 20, 25 0, 1 6, 9 10, 17 20, 25
1 data page: 0, 10
1 data page: 9, 17
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 12
General External Merge Sort
B=4, N=8: Pass 0, Run 2
Read 4 pages into memory: 4 IOs
1 data page: 7, 8
1 data page: 12, 2
7, 8, 12, 2, 4, 11, 15, 3
1 data page: 4, 11
1 data page: 15, 3
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 12
General External Merge Sort
B=4, N=8: Pass 0, Run 2
In-memory sort
1 data page: 7, 8
1 data page: 12, 2
2, 3, 4, 7, 8, 11, 12, 15
1 data page: 4, 11
1 data page: 15, 3
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 16
General External Merge Sort
B=4, N=8: Pass 0, Run 2
Write 4 pages to disk: 4 IOs
1 data page: 7, 8
1 sorted run of 4 pages
1 data page: 12, 2
2, 3, 4, 7, 8, 11, 12, 15 2, 3 4, 7 8, 11 12, 15
1 data page: 4, 11
1 data page: 15, 3
Load B data pages into buffer pages in memory, and sort them all at once.
I/O Total (So Far): 16
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 18
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 20
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 20
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 20
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 20
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 20
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 22
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 22
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 22
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 22
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 22
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 23
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 23
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 24
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 24
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 24
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 25
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 25
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 26
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 26
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 26
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 27
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 27
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 28
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 28
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 28
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 29
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 29
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 29
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 29
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run at a time. Store
sorted results in output buffer. Write to disk when output buffer is full.
I/O Total (So Far): 31
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17
buffer is full.
I/O Total (So Far): 31
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17
buffer is full.
I/O Total (So Far): 31
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
input buffer: 25
input buffer: [empty]
0, 1 2, 3 4, 6
Run 2: 1 sorted run of 4 pages input buffer: [unused]
output buffer: 20
7, 8 9, 10 11, 12
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17
buffer is full.
I/O Total (So Far): 31
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
input buffer: 25
input buffer: [empty]
0, 1 2, 3 4, 6
Run 2: 1 sorted run of 4 pages input buffer: [unused]
output buffer: 20
7, 8 9, 10 11, 12
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17
buffer is full.
I/O Total (So Far): 31
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17
buffer is full.
I/O Total (So Far): 32
General External Merge Sort
B=4, N=8: Pass 1
Read 2 sorted runs of 4 pages into memory: 8 IOs; Write 1 sorted run of 8 pages to disk: 8 IOs
Run 1: 1 sorted run of 4 pages
Reserve B-1 input buffers and 1 output buffer. Load 1 page from each run
at a time. Store sorted results in output buffer. Write to disk when output 15, 17 20, 25
buffer is full.
General External Merge Sort - Sanity Check
B=4, N=8
Cost = 2N * (1 + ⌈ logB-1(⌈N/B⌉) ⌉)
= 2(8) * (1 + ⌈ log3(2) ⌉)
0, 1 2, 3 4, 6
= 16 * (1 + 1)
= 32 I/Os ✓ 7, 8 9, 10 11, 12
15, 17 20, 25
Worksheet
Worksheet - Sorting (a) - (c)
You have 4 buffer pages and your file has a total of 108 pages
of records to sort.
What is the total cost for this sort process in terms of I/O?
Worksheet - Sorting (a) - (c)
B=4, N=108: Pass 0 - 108 IOs (Read) + 108 IOs (Write)
Load B data pages into memory, sort all values in memory, write back to disk
1 data page
input buffer
1 data page input buffer
1 data page input buffer 1 sorted
run of 4
1 data page input buffer pages
This process happens once for each of our ceil(108/4) = 27 runs because we have 108
pages total, and we sort 4 pages each time.
Worksheet - Sorting (a) - (c)
B=4, N=108: Pass 1 - 108 IOs (Read) + 108 IOs (Write)
Load B-1 data pages into memory, sort all values in memory, write sorted runs back to disk
We started off with 27 runs of 4 pages each. We can merge B-1 = 3 runs at a time, so we produce
ceil(27/3) = 9 runs of 4*3 = 12 pages at the end of Pass 1.
Worksheet - Sorting (a) - (c)
B=4, N=108: Pass 2 - 108 IOs (Read) + 108 IOs (Write)
Load B-1 data pages into memory, sort all values in memory, write sorted runs back to disk
We started off with 9 runs of 12 pages each. We can merge B-1 = 3 runs at a time, so we
produce ceil(9/3) = 3 runs of 12*3 = 36 pages at the end of Pass 2.
Worksheet - Sorting (a) - (c)
B=4, N=108: Pass 3 - 108 IOs (Read) + 108 IOs (Write)
Load B-1 data pages into memory, sort all values in memory, write sorted runs back to disk
We started off with 3 runs of 36 pages each. We can merge B-1 = 3 runs at a time, so we
produce ceil(3/3) = 1 run of 36*3 = 108 pages at the end of Pass 3.
Since we’ve produced 1 sorted run containing all our data, external sorting is now complete.
Worksheet - Sorting (a)
You have 4 buffer pages and your file has a total of 108 pages
of records to sort.
What is the total cost for this sort process in terms of I/O?
If the pages were already sorted individually, how many passes would it take to sort the file
and how many IOs would it be instead?
These pages are individually sorted, so because we don't know how the pages will be sorted
together, the IO cost does not change! Pass 0 is still going to need to produce ceil(N/B) sorted
runs of B pages each, and so on and so forth. As a result, you would still require 4 passes and 864
IOs.
1
Input Buffer: 1 3 Input Buffer: [empty]
3
Input Buffer: 2 5 Input Buffer: [empty]
N=6, B=4
Assign colors to 3
partitions using our
hash function:
{G,P} → 1
{B} → 2
{R, Y} → 3
External Hashing Example: Pass 1
N=6, B=4
Assign colors to 3
partitions using our
hash function:
{G,P} → 1
{B} → 2
{R, Y} → 3
External Hashing Example: Pass 1
N=6, B=4
Assign colors to 3
partitions using our
hash function:
{G,P} → 1
{B} → 2
{R, Y} → 3
External Hashing Example: Pass 1
N=6, B=4
Assign colors to 3
partitions using our
hash function:
{G,P} → 1
{B} → 2
{R, Y} → 3
External Hashing Example: Pass 1
N=6, B=4
Assign colors to 3
partitions using our
hash function:
{G,P} → 1
{B} → 2
{R, Y} → 3
External Hashing Example: Pass 1
N=6, B=4
N=6, B=4
External Hashing Example: Pass 2
Create in-memory table for each partition.
N=6, B=4
Green
Purple
External Hashing
● What if the partitions are too big after the first pass?
○ We apply recursive partitioning: for each partition
from the first pass, apply another hash function
(independent of hp and hr!) to split the partition into
even smaller partitions
■ Repeat this as many times as needed, until
partitions fit in memory
■ Every hash function used must be independent!
External Hashing
● What if the partitions are too big after the first pass?
○ We can recursively partition: for each partition from the
first pass, apply another hash function (independent of
hp and hr!) to split the partition into even smaller
partitions
External Hashing
● Is recursive partitioning always enough?
External Hashing
● Is recursive partitioning always enough?
■ No. If there are more than B pages of duplicates,
we’ll never get small enough partitions.
● Then what do we do?
■ Check if all values in partition are the same and
terminate algorithm
Worksheet
Worksheet - Hashing (a)
What are some use-cases in which hashing is preferred over
sorting?
Worksheet - Hashing (a)
What are some use-cases in which hashing is preferred over
sorting?
input buffer(s)
1 input buffer(s)
100 100
x9
20 20 20 20 3 27 27 Build 27
x9
50 50 50 50 6 54 54 Build 54