0% found this document useful (0 votes)
168 views

Calculating Traffic Flow Using 2D Array Computations in C

The document describes a C++ program that was created to solve traffic flow problems in a fictional city. It discusses the linear algebra and mathematical concepts behind modeling traffic flow as a system of linear equations. The algorithm developed takes a traffic flow matrix as input, sorts the rows to place pivots along the main diagonal, and then uses row operations to reduce the matrix to row echelon form to solve for the free variables and traffic flows. The program was tested on a large traffic flow problem and provides a foundation for further improvements to model real-world city traffic optimization.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
168 views

Calculating Traffic Flow Using 2D Array Computations in C

The document describes a C++ program that was created to solve traffic flow problems in a fictional city. It discusses the linear algebra and mathematical concepts behind modeling traffic flow as a system of linear equations. The algorithm developed takes a traffic flow matrix as input, sorts the rows to place pivots along the main diagonal, and then uses row operations to reduce the matrix to row echelon form to solve for the free variables and traffic flows. The program was tested on a large traffic flow problem and provides a foundation for further improvements to model real-world city traffic optimization.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 14

1.

Introduction

This report will describe the process used to create a program in C++ that solves the problem of calculating the traffic flow in a fictional city. It follows the completion of the C++ program (see Appendix C). This report will discuss the mathematics behind the problem, and how the code was designed so that the program could solve the traffic flow system. The report will not analyze the actual syntax of the code, as all of it falls into the material found in 91.166. The program was then used to calculate a large traffic flow matrix (see Appendix B). The city and program were designed by project partners Jamie Pold and Jan Pittner. 1.1 Research Methodology

This project was based on materials studied in 91.166 Problem Solving and Computers. The mathematics behind traffic flow problems are found in 69.114 Linear Algebra for Engineering and Computer Science students, the text and course. The algorithm to solve a traffic flow problem using C++ was devised and revised through many versions of the programs code. The algorithm was created without any external assistance. 1.2 Background Mathematics A system of linear equations governs a traffic flow system. These equations can be obtained from the system by observing that as many cars entering an intersection must leave that intersection. For the purposes of this report and the program created, two variables and two constants are present per intersection. Noting that the sum of cars entering the intersection must equal the sum of cars leaving the intersection, an equation can be formed for that intersection. The coefficients of these equations can be placed inside a matrix, called a coefficient matrix. Each column of this matrix holds the coefficients for a

specific variable. The last column of the matrix (the supplementary column) contains the constants of the equations. Row operations give a matrix of row echelon form. A traffic flow system will always have at least one free variable. [2] Any real number can be assigned to this free variable, however, only a certain domain of numbers will give reasonable results (that is, non-negative number of cars on a street, for example). See appendix 1 for an example of how to go through a simple traffic flow problem by hand.

2.0

The Algorithm

A matrix is physically identical to a C++ array. [1:92] The program (see Appendix C) can handle X by X+1 matrices (the coefficient matrix must be square). To solve the system, the traffic flow array must be reduced to row echelon form. Then, the free variables can be found and have values assigned to them. The program does not check to see if the inputted free variables give a consistent solution. The array is then reduced to row reduced echelon form, yielding the answer to the traffic flow problem. 2.1 Row Echelon Form

To reduce an array to row echelon form, the program requires that all the entries along the main diagonal are nonzero. That way, all entries below the main diagonal that are nonzero can be transformed to zero entries by way of row operations with the pivot row in question. The problem, however, is getting nonzero entries along the main diagonal in the first place.

2.1.1

Pivots along the main diagonal

One possible solution is to ask the user to input the array in such a manner. However, this was viewed to be an unsatisfactory solution, because it seemed to place too much of a burden on the user. Thus, a method of sorting the rows was devised. Depending on the size of the matrix, and knowing that only one combination of the rows will allow for all the pivots to be along the main diagonal, a random sort was ruled out due to the large number of possible combinations. A more procedural sort was devised. The program would search along each column of the array. It would take the first row it found with a non-zero entry in that column, and copies it to another matrix, deleting it from the old one. It would then search that column again for a nonzero, and take out that row, placing it below the first row in the new matrix, and deleting it from the old matrix. It would do this for each column except for the supplementary column. This placed many pivots into their proper positions, but not all (due to the nature of the system). Although not completely sorted, this did place the array into a form where all the variables for each block were gathered together. It was reasoned that the best sort method would be to break up a large array into smaller arrays, where only a few combinations of rows are possible. A 4x5 traffic flow array requires at the most 3 different combinations before a combination is found that has pivots along the main diagonal. Swapping the first two rows might lead to a suitable combination. Swapping the last two rows might lead to a suitable configuration. Or, the first two rows could be swapped, and the last two rows could be swapped. Going through the entire array in this method allowed for all the pivots to be lined up along the main diagonal. Next, the program could easily check for non-zero entries below the pivot in that column, and perform the necessary row operations to reduce the matrix to a reduced echelon form.

2.2

Free Variables

In reduced echelon form, free variables appear in the array. At this point, the only error checking built into the program takes place. Where a zero is found in the pivot entry, that row is checked to see whether all the entries are zero. If they are, then the system represents traffic flow in a city. If not, than the array was not correct and the program aborts. The location of each free variable was placed into another array, and after the entire array is checked for free variables, the program asks the user to input the free variable values for each free variable, setting the free variable entry to one. Again, no check was coded to see whether or not the inputted free variables gave a consistent solution. 2.3 Row Reduced Echelon Form The array now has 1s all along the main diagonal, and proceeds to row reduce from the bottom of the matrix, up. Starting with the last row, each entry above the pivot is checked, and row operations are done so that the entry is a zero. This proceeds up the array, until all that remains is 1s along the diagonal, and the rest of the entries in the coefficient array are zero. The numbers in the supplementary column tell what value the variable has. 3.0 The Result

A program was written in C++ that can calculate the traffic flow system of a fictional city. A large traffic flow problem was computed using the program code (see Appendix B).

4.0

Conclusion and Recommendations

A computer program is very helpful when large matrices, or a large number of matrices, must be computed. Once the basic algorithm and code is finished, the code could be improved so that it would be more helpful in real life situations (the object oriented aspect

of C++ easily allows this). The input could be taken real-time from traffic sensors, or emergency response teams. Another algorithm to optimize the traffic flow could be added, and controls for traffic lights could be used so as to control how many cars are on a particular street at a particular time. The output could be wired to the internet, and broadcast to cars with access to the world wide web, so drivers, or rather the cars, could pick a better, faster route on roads experiencing less traffic congestion. The program coded in this project was very simple, but it sets a basic foundation for improving traffic flow in not just fictional cities, but real life as well.

5.0 [1] [2]

References S. Prata, C++ Primer Plus, Indianapolis, IN: Sams Publishing, 1998 D.C. Lay, Linear Algebra and Its Applications 2nd Edition, Reading: MA; 1997

6.0

Extensive Glossary

Array Physically identical to a matrix. Its dimensions (m x n) indicate how many rows (m) and columns (n) there are. Augmented matrix The combination of the coefficient matrix and

supplementary matrix. This is the matrix (array) used inside the program. Each row of the matrix is the equation gained from one intersection that makes up the city. Note that each column corresponds to the variables of the matrix. Variable X1, as seen in Figure 1, corresponds to the unknown number

of cars on street X1. It is also the first column of the matrix. [2] Block A collection of four intersections. Coefficient matrix An array of the numbers in front of the variables in the linear system governing a city. In a traffic flow matrix, the only entries inside the coefficient matrix are 1s, 0s, and 1s. [2] Consistent A linear system that has at least one solution is consistent. [2] Constant Domain A known number of cars. The range of numbers that gives the system a reasonable solution (in traffic flow systems, no negative numbers of cars on a street). Entry A matrix consists of numbers. Each number is an entry. Take a matrix A of size mxn. Each entry in the matrix can be denoted as Aij, where i = 1,2,3,..., m and j = 1,2,3,...,n. Free variable When a traffic flow matrix is in row echelon form, there are a number of row(s) (depending on the size of the matrix) whose entries will all be 0s. Its pivot can arbitrarily be set to one, and an arbitrary value can be assigned to the supplementary (matrix) value. Intersection (see list of symbols) a crossing of four, one way streets. One variable and one constant enters, and a different variable

and constant exit. The sum of the number of cars entering the intersection equals the sum of the number of cars leaving the intersection. Linear equation An equation where the variables are of the first degree (IE y = 2x + 3 or y x = 0) Linear system Main diagonal A collection of linear equations The entries in matrix A whose locations are denoted by Aii, where i = 0,1,2,3,...,m. The main diagonal corresponds to the pivot positions of the matrix A. Pivot position A location in a matrix A that corresponds to a leading entry in an row echelon form matrix of matrix A. [2:15] Pivot row Supplementary matrix In the context of a pivot, the row to which the pivot belongs. The constants of the corresponding linear system. In an augmented matrix, the supplementary matrix becomes the supplementary column. [2] Row Reduced Echelon Form The leading entry in each nonzero row is 1. Each leading 1 is the only nonzero entry in its column. [2:14] Row Echelon Form All nonzero rows are above any rows of all zeros. Each leading entry of a row is in a column to the right of the leading entry of the row above it. All entries in a column below a leading entry are zero. [2:14] Row operations The addition or subtraction of one row in a matrix to another row in the same matrix.

Variable

An unknown number of cars

7.0 Appendix A

Figure 1

Obtain equations by observing that an equal number of cars must enter and exit an intersection: X2 X1 = 25 X3 X2 = -10 X4 X3 = -70 9

X1 X4 = 55

~ ~ ~ ~

-1 0 0 1 1 0 0 0

1 -1 0 0 -1 1 0 1

0 1 -1 0 0 -1 1 0

0 0 1 -1 0 0 -1 -1

| | | | | | | |

25 -10 -70 55 -25 10 70 80 R1 * -1 R2 * -1 R3 * -1 R4 + R1

Figure 2

Figure 3

1 0 0 0 1 0 0 0

-1 1 0 0 -1 1 0 0

0 -1 1 1 0 -1 1 0

0 0 -1 -1 0 0 -1 0

| | | | | | | |

-25 10 70 70 -25 10 70 0

Figure 4 R4 + R2

Figure 5 R4 R3

Note that the last row is all zeroes. Since the pivot position in that row is the X4 (fourth column) variable, it is the free variable. Choosing an arbitrary value of 40, and setting that pivot equal to one:

~ ~ ~

1 0 0 0

-1 1 0 0

0 -1 1 0

0 0 -1 1

| | | |

-25 10 70 40

Figure 6 X4 set to 40

1 0 0 0 1 0 0 0 1 0 0 0

-1 1 0 0 -1 1 0 0 0 1 0 0

0 -1 1 0 0 0 1 0 0 0 1 0

0 0 0 1 0 0 0 1 0 0 0 1

| | | | | | | | | | | |

-25 10 110 40 -25 120 110 40 95 120 110 40

Figure 7 R3 + R4

R2 + R3

Figure 8

R1 + R2

10

~
cars.

Figure 9

So, the final solution is X1 has 95 cars, X2 has 120 cars, X3 has 110 cars, and X4 has 40

8.0

Appendix B

As seen in Appendix A, traffic flow problems can easily be calculated by hand. However, manual calculation of a traffic flow is nearly impossible if the traffic system is very large. The pinnacle of this project, nick-named Artemevaopolis, is shown here. It has 36 variables, 9 of which will turn out to be free variables. Figure 10 60 85 X1 45 100 X2 X3 X4 100 45 55 X5 30 60 X8 100 70 X6 X7 80 60 30 55 25 X9 90 X10 50 X11 X12 65 11

75

50 X13 60 30 50 X25 20 45 X16

X14 X15

90 X17 140 100 130 X29 55 90

X18 X19 X20 10 X30 X31 X32 60 70

150 X21

X22 X23 X24

70

40

70 X26 X27 X28 40

15 45 X33 30 25

70 X34 X35 X36 40

80

25

The equations and its corresponding matrix are found manually. The matrix is then transferred into the source code. Program output: (edited slightly so as to fit the page) -----------------------------------------------------------------------------------------------------------FISHWARE DISCLAIMER: User input is *not* controlled. User *must* enter integer values, and it is NOT recommended to enter non traffic flow problems. Matrix A defined to be 36 by 37. Matrix A: -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |25 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-10 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |55 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-70 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 |-60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 |35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 |-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 |-5 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 |30 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-15 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 5 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-30 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |40 Figure 11

12

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 |-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 |30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 |-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 |25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 |15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |-5 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-30 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-20 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-20 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |10 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-50 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0-1 0 0 0 0 0 0 0 0 0 0 0 0 |-55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 0 0 |-30 Notice, as mentioned in 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 0 0 0 0 0 0 0 0 0 0 |20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 |-15 section 2.0, no protection Enter an integer value now: 66 was built into the Free variable found for X20 Enter an integer value now: 66 program to see whether Free variable found for X24 Free variable found for X4 Enter an integer value now: 66 or Enter an integer value now: 66 Free variable found for X28 not the free variables Free variable found for X8 Enter an integer value now: 66 gave a consistent Enter an integer value now: 66 Free variable found for X32 Free variable found for X12 Enter an integer value now: 66 solution. Note that there Enter an integer value now: 66 Free variable found for X36 Free variable found for X16 Enter an integer value now: 66 are a negative amount of Matrix A: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |121 Figure 12 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |146 cars on two of the streets, 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |136 which could represent a 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |96 traffic jam or perhaps 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |81 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |86 some sort of fatal 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |46 accident. 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |16 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |56 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |36 13

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |-4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |56 000000000000000000100000000000000000|6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |66

14

You might also like