Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
42ab7fd8
Commit
42ab7fd8
authored
Jul 15, 2014
by
edgarriba
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dls() no compiles
parent
fb67ab12
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
334 additions
and
12 deletions
+334
-12
dls.cpp
modules/calib3d/src/dls.cpp
+311
-3
dls.h
modules/calib3d/src/dls.h
+19
-6
solvepnp.cpp
modules/calib3d/src/solvepnp.cpp
+4
-3
No files found.
modules/calib3d/src/dls.cpp
View file @
42ab7fd8
#include
<iostream>
#include
"precomp.hpp"
#include "dls.h"
#include <iostream>
dls
::
dls
()
dls
::
dls
(
const
cv
::
Mat
&
opoints
,
const
cv
::
Mat
&
ipoints
)
:
f1coeff
(
21
),
f2coeff
(
21
),
f3coeff
(
21
)
{
// TODO Auto-generated constructor stub
N
=
opoints
.
type
()
==
CV_64F
?
opoints
.
checkVector
(
3
,
CV_64F
)
:
opoints
.
checkVector
(
3
,
CV_32F
)
;
H
=
cv
::
Mat
::
zeros
(
3
,
3
,
opoints
.
type
());
A
=
cv
::
Mat
::
zeros
(
3
,
9
,
opoints
.
type
());
D_mat
=
cv
::
Mat
::
zeros
(
9
,
9
,
opoints
.
type
());
init_vectors
(
opoints
,
ipoints
);
build_coeff_mattrix
();
}
...
...
@@ -12,3 +23,300 @@ dls::~dls()
{
// TODO Auto-generated destructor stub
}
void
dls
::
init_vectors
(
const
cv
::
Mat
&
opoints
,
const
cv
::
Mat
&
ipoints
)
{
if
(
opoints
.
cols
==
3
)
opoints
.
reshape
(
N
,
3
);
if
(
ipoints
.
cols
==
2
)
ipoints
.
reshape
(
N
,
2
);
p
=
opoints
;
z
=
ipoints
;
// make z into unit vectors from normalized pixel coords
z
.
push_back
(
cv
::
Mat
::
ones
(
1
,
N
,
opoints
.
type
()));
for
(
int
i
=
0
;
i
<
N
;
++
i
)
{
cv
::
Mat
&
col_i
=
z
.
col
(
i
);
double
sr
=
std
::
pow
(
col_i
.
at
<
double
>
(
0
),
2
)
+
std
::
pow
(
col_i
.
at
<
double
>
(
1
),
2
)
+
std
::
pow
(
col_i
.
at
<
double
>
(
2
),
2
);
sr
=
std
::
sqrt
(
sr
);
col_i
.
at
<
double
>
(
0
,
i
)
/=
sr
;
col_i
.
at
<
double
>
(
1
,
i
)
/=
sr
;
col_i
.
at
<
double
>
(
2
,
i
)
/=
sr
;
}
}
void
dls
::
build_coeff_mattrix
()
{
cv
::
Mat
eye
=
cv
::
Mat
::
eye
(
3
,
3
,
p
.
type
());
// build coeff matrix
// An intermediate matrix, the inverse of what is called "H" in the paper
// (see eq. 25)
for
(
int
i
=
0
;
i
<
N
;
++
i
)
{
cv
::
Mat
z_dot
=
z
.
col
(
i
)
*
z
.
col
(
i
).
t
();
H
+=
eye
-
z_dot
;
A
+=
(
z_dot
-
eye
)
*
LeftMultVec
(
p
.
col
(
i
));
}
cv
::
solve
(
H
,
A
,
A
);
for
(
int
i
=
0
;
i
<
N
;
++
i
)
{
cv
::
Mat
z_dot
=
z
.
col
(
i
)
*
z
.
col
(
i
).
t
();
D_mat
+=
cv
::
Mat
(
LeftMultVec
(
p
.
col
(
i
))
+
A
).
t
()
*
(
eye
-
z_dot
)
*
(
LeftMultVec
(
p
.
col
(
i
))
+
A
);
}
// put D into array
double
D
[
10
][
10
];
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
for
(
int
j
=
0
;
j
<
10
;
++
j
)
{
D
[
i
+
1
][
j
+
1
]
=
D_mat
.
at
<
double
>
(
i
,
j
);
}
}
// F1 COEFFICIENT
f1coeff
[
1
]
=
2
*
D
[
1
][
6
]
-
2
*
D
[
1
][
8
]
+
2
*
D
[
5
][
6
]
-
2
*
D
[
5
][
8
]
+
2
*
D
[
6
][
1
]
+
2
*
D
[
6
][
5
]
+
2
*
D
[
6
][
9
]
-
2
*
D
[
8
][
1
]
-
2
*
D
[
8
][
5
]
-
2
*
D
[
8
][
9
]
+
2
*
D
[
9
][
6
]
-
2
*
D
[
9
][
8
];
// constant term
f1coeff
[
2
]
=
6
*
D
[
1
][
2
]
+
6
*
D
[
1
][
4
]
+
6
*
D
[
2
][
1
]
-
6
*
D
[
2
][
5
]
-
6
*
D
[
2
][
9
]
+
6
*
D
[
4
][
1
]
-
6
*
D
[
4
][
5
]
-
6
*
D
[
4
][
9
]
-
6
*
D
[
5
][
2
]
-
6
*
D
[
5
][
4
]
-
6
*
D
[
9
][
2
]
-
6
*
D
[
9
][
4
];
// s1^2 * s2
f1coeff
[
3
]
=
4
*
D
[
1
][
7
]
-
4
*
D
[
1
][
3
]
+
8
*
D
[
2
][
6
]
-
8
*
D
[
2
][
8
]
-
4
*
D
[
3
][
1
]
+
4
*
D
[
3
][
5
]
+
4
*
D
[
3
][
9
]
+
8
*
D
[
4
][
6
]
-
8
*
D
[
4
][
8
]
+
4
*
D
[
5
][
3
]
-
4
*
D
[
5
][
7
]
+
8
*
D
[
6
][
2
]
+
8
*
D
[
6
][
4
]
+
4
*
D
[
7
][
1
]
-
4
*
D
[
7
][
5
]
-
4
*
D
[
7
][
9
]
-
8
*
D
[
8
][
2
]
-
8
*
D
[
8
][
4
]
+
4
*
D
[
9
][
3
]
-
4
*
D
[
9
][
7
];
// s1 * s2
f1coeff
[
4
]
=
4
*
D
[
1
][
2
]
-
4
*
D
[
1
][
4
]
+
4
*
D
[
2
][
1
]
-
4
*
D
[
2
][
5
]
-
4
*
D
[
2
][
9
]
+
8
*
D
[
3
][
6
]
-
8
*
D
[
3
][
8
]
-
4
*
D
[
4
][
1
]
+
4
*
D
[
4
][
5
]
+
4
*
D
[
4
][
9
]
-
4
*
D
[
5
][
2
]
+
4
*
D
[
5
][
4
]
+
8
*
D
[
6
][
3
]
+
8
*
D
[
6
][
7
]
+
8
*
D
[
7
][
6
]
-
8
*
D
[
7
][
8
]
-
8
*
D
[
8
][
3
]
-
8
*
D
[
8
][
7
]
-
4
*
D
[
9
][
2
]
+
4
*
D
[
9
][
4
];
//s1 * s3
f1coeff
[
5
]
=
8
*
D
[
2
][
2
]
-
8
*
D
[
3
][
3
]
-
8
*
D
[
4
][
4
]
+
8
*
D
[
6
][
6
]
+
8
*
D
[
7
][
7
]
-
8
*
D
[
8
][
8
];
// s2 * s3
f1coeff
[
6
]
=
4
*
D
[
2
][
6
]
-
2
*
D
[
1
][
7
]
-
2
*
D
[
1
][
3
]
+
4
*
D
[
2
][
8
]
-
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
-
2
*
D
[
3
][
9
]
+
4
*
D
[
4
][
6
]
+
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
+
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
+
4
*
D
[
6
][
4
]
-
2
*
D
[
7
][
1
]
+
2
*
D
[
7
][
5
]
-
2
*
D
[
7
][
9
]
+
4
*
D
[
8
][
2
]
+
4
*
D
[
8
][
4
]
-
2
*
D
[
9
][
3
]
-
2
*
D
[
9
][
7
];
// s2^2 * s3
f1coeff
[
7
]
=
2
*
D
[
2
][
5
]
-
2
*
D
[
1
][
4
]
-
2
*
D
[
2
][
1
]
-
2
*
D
[
1
][
2
]
-
2
*
D
[
2
][
9
]
-
2
*
D
[
4
][
1
]
+
2
*
D
[
4
][
5
]
-
2
*
D
[
4
][
9
]
+
2
*
D
[
5
][
2
]
+
2
*
D
[
5
][
4
]
-
2
*
D
[
9
][
2
]
-
2
*
D
[
9
][
4
];
//s2^3
f1coeff
[
8
]
=
4
*
D
[
1
][
9
]
-
4
*
D
[
1
][
1
]
+
8
*
D
[
3
][
3
]
+
8
*
D
[
3
][
7
]
+
4
*
D
[
5
][
5
]
+
8
*
D
[
7
][
3
]
+
8
*
D
[
7
][
7
]
+
4
*
D
[
9
][
1
]
-
4
*
D
[
9
][
9
];
// s1 * s3^2
f1coeff
[
9
]
=
4
*
D
[
1
][
1
]
-
4
*
D
[
5
][
5
]
-
4
*
D
[
5
][
9
]
+
8
*
D
[
6
][
6
]
-
8
*
D
[
6
][
8
]
-
8
*
D
[
8
][
6
]
+
8
*
D
[
8
][
8
]
-
4
*
D
[
9
][
5
]
-
4
*
D
[
9
][
9
];
// s1
f1coeff
[
10
]
=
2
*
D
[
1
][
3
]
+
2
*
D
[
1
][
7
]
+
4
*
D
[
2
][
6
]
-
4
*
D
[
2
][
8
]
+
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
+
2
*
D
[
3
][
9
]
-
4
*
D
[
4
][
6
]
+
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
+
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
-
4
*
D
[
6
][
4
]
+
2
*
D
[
7
][
1
]
+
2
*
D
[
7
][
5
]
+
2
*
D
[
7
][
9
]
-
4
*
D
[
8
][
2
]
+
4
*
D
[
8
][
4
]
+
2
*
D
[
9
][
3
]
+
2
*
D
[
9
][
7
];
// s3
f1coeff
[
11
]
=
2
*
D
[
1
][
2
]
+
2
*
D
[
1
][
4
]
+
2
*
D
[
2
][
1
]
+
2
*
D
[
2
][
5
]
+
2
*
D
[
2
][
9
]
-
4
*
D
[
3
][
6
]
+
4
*
D
[
3
][
8
]
+
2
*
D
[
4
][
1
]
+
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
+
2
*
D
[
5
][
2
]
+
2
*
D
[
5
][
4
]
-
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
-
4
*
D
[
7
][
8
]
+
4
*
D
[
8
][
3
]
-
4
*
D
[
8
][
7
]
+
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s2
f1coeff
[
12
]
=
2
*
D
[
2
][
9
]
-
2
*
D
[
1
][
4
]
-
2
*
D
[
2
][
1
]
-
2
*
D
[
2
][
5
]
-
2
*
D
[
1
][
2
]
+
4
*
D
[
3
][
6
]
+
4
*
D
[
3
][
8
]
-
2
*
D
[
4
][
1
]
-
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
-
2
*
D
[
5
][
2
]
-
2
*
D
[
5
][
4
]
+
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
+
4
*
D
[
7
][
8
]
+
4
*
D
[
8
][
3
]
+
4
*
D
[
8
][
7
]
+
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s2 * s3^2
f1coeff
[
13
]
=
6
*
D
[
1
][
6
]
-
6
*
D
[
1
][
8
]
-
6
*
D
[
5
][
6
]
+
6
*
D
[
5
][
8
]
+
6
*
D
[
6
][
1
]
-
6
*
D
[
6
][
5
]
-
6
*
D
[
6
][
9
]
-
6
*
D
[
8
][
1
]
+
6
*
D
[
8
][
5
]
+
6
*
D
[
8
][
9
]
-
6
*
D
[
9
][
6
]
+
6
*
D
[
9
][
8
];
// s1^2
f1coeff
[
14
]
=
2
*
D
[
1
][
8
]
-
2
*
D
[
1
][
6
]
+
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
+
4
*
D
[
3
][
2
]
-
4
*
D
[
3
][
4
]
-
4
*
D
[
4
][
3
]
-
4
*
D
[
4
][
7
]
-
2
*
D
[
5
][
6
]
+
2
*
D
[
5
][
8
]
-
2
*
D
[
6
][
1
]
-
2
*
D
[
6
][
5
]
+
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
-
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
+
2
*
D
[
8
][
5
]
-
2
*
D
[
8
][
9
]
+
2
*
D
[
9
][
6
]
-
2
*
D
[
9
][
8
];
// s3^2
f1coeff
[
15
]
=
2
*
D
[
1
][
8
]
-
2
*
D
[
1
][
6
]
-
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
-
4
*
D
[
3
][
2
]
-
4
*
D
[
3
][
4
]
-
4
*
D
[
4
][
3
]
+
4
*
D
[
4
][
7
]
+
2
*
D
[
5
][
6
]
-
2
*
D
[
5
][
8
]
-
2
*
D
[
6
][
1
]
+
2
*
D
[
6
][
5
]
-
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
+
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
-
2
*
D
[
8
][
5
]
+
2
*
D
[
8
][
9
]
-
2
*
D
[
9
][
6
]
+
2
*
D
[
9
][
8
];
// s2^2
f1coeff
[
16
]
=
2
*
D
[
3
][
9
]
-
2
*
D
[
1
][
7
]
-
2
*
D
[
3
][
1
]
-
2
*
D
[
3
][
5
]
-
2
*
D
[
1
][
3
]
-
2
*
D
[
5
][
3
]
-
2
*
D
[
5
][
7
]
-
2
*
D
[
7
][
1
]
-
2
*
D
[
7
][
5
]
+
2
*
D
[
7
][
9
]
+
2
*
D
[
9
][
3
]
+
2
*
D
[
9
][
7
];
// s3^3
f1coeff
[
17
]
=
4
*
D
[
1
][
6
]
+
4
*
D
[
1
][
8
]
+
8
*
D
[
2
][
3
]
+
8
*
D
[
2
][
7
]
+
8
*
D
[
3
][
2
]
+
8
*
D
[
3
][
4
]
+
8
*
D
[
4
][
3
]
+
8
*
D
[
4
][
7
]
-
4
*
D
[
5
][
6
]
-
4
*
D
[
5
][
8
]
+
4
*
D
[
6
][
1
]
-
4
*
D
[
6
][
5
]
-
4
*
D
[
6
][
9
]
+
8
*
D
[
7
][
2
]
+
8
*
D
[
7
][
4
]
+
4
*
D
[
8
][
1
]
-
4
*
D
[
8
][
5
]
-
4
*
D
[
8
][
9
]
-
4
*
D
[
9
][
6
]
-
4
*
D
[
9
][
8
];
// s1 * s2 * s3
f1coeff
[
18
]
=
4
*
D
[
1
][
5
]
-
4
*
D
[
1
][
1
]
+
8
*
D
[
2
][
2
]
+
8
*
D
[
2
][
4
]
+
8
*
D
[
4
][
2
]
+
8
*
D
[
4
][
4
]
+
4
*
D
[
5
][
1
]
-
4
*
D
[
5
][
5
]
+
4
*
D
[
9
][
9
];
// s1 * s2^2
f1coeff
[
19
]
=
6
*
D
[
1
][
3
]
+
6
*
D
[
1
][
7
]
+
6
*
D
[
3
][
1
]
-
6
*
D
[
3
][
5
]
-
6
*
D
[
3
][
9
]
-
6
*
D
[
5
][
3
]
-
6
*
D
[
5
][
7
]
+
6
*
D
[
7
][
1
]
-
6
*
D
[
7
][
5
]
-
6
*
D
[
7
][
9
]
-
6
*
D
[
9
][
3
]
-
6
*
D
[
9
][
7
];
// s1^2 * s3
f1coeff
[
20
]
=
4
*
D
[
1
][
1
]
-
4
*
D
[
1
][
5
]
-
4
*
D
[
1
][
9
]
-
4
*
D
[
5
][
1
]
+
4
*
D
[
5
][
5
]
+
4
*
D
[
5
][
9
]
-
4
*
D
[
9
][
1
]
+
4
*
D
[
9
][
5
]
+
4
*
D
[
9
][
9
];
// s1^3
// F2 COEFFICIENT
f2coeff
[
1
]
=
-
2
*
D
[
1
][
3
]
+
2
*
D
[
1
][
7
]
-
2
*
D
[
3
][
1
]
-
2
*
D
[
3
][
5
]
-
2
*
D
[
3
][
9
]
-
2
*
D
[
5
][
3
]
+
2
*
D
[
5
][
7
]
+
2
*
D
[
7
][
1
]
+
2
*
D
[
7
][
5
]
+
2
*
D
[
7
][
9
]
-
2
*
D
[
9
][
3
]
+
2
*
D
[
9
][
7
];
// constant term
f2coeff
[
2
]
=
4
*
D
[
1
][
5
]
-
4
*
D
[
1
][
1
]
+
8
*
D
[
2
][
2
]
+
8
*
D
[
2
][
4
]
+
8
*
D
[
4
][
2
]
+
8
*
D
[
4
][
4
]
+
4
*
D
[
5
][
1
]
-
4
*
D
[
5
][
5
]
+
4
*
D
[
9
][
9
];
// s1^2 * s2
f2coeff
[
3
]
=
4
*
D
[
1
][
8
]
-
4
*
D
[
1
][
6
]
-
8
*
D
[
2
][
3
]
+
8
*
D
[
2
][
7
]
-
8
*
D
[
3
][
2
]
-
8
*
D
[
3
][
4
]
-
8
*
D
[
4
][
3
]
+
8
*
D
[
4
][
7
]
+
4
*
D
[
5
][
6
]
-
4
*
D
[
5
][
8
]
-
4
*
D
[
6
][
1
]
+
4
*
D
[
6
][
5
]
-
4
*
D
[
6
][
9
]
+
8
*
D
[
7
][
2
]
+
8
*
D
[
7
][
4
]
+
4
*
D
[
8
][
1
]
-
4
*
D
[
8
][
5
]
+
4
*
D
[
8
][
9
]
-
4
*
D
[
9
][
6
]
+
4
*
D
[
9
][
8
];
// s1 * s2
f2coeff
[
4
]
=
8
*
D
[
2
][
2
]
-
8
*
D
[
3
][
3
]
-
8
*
D
[
4
][
4
]
+
8
*
D
[
6
][
6
]
+
8
*
D
[
7
][
7
]
-
8
*
D
[
8
][
8
];
// s1 * s3
f2coeff
[
5
]
=
4
*
D
[
1
][
4
]
-
4
*
D
[
1
][
2
]
-
4
*
D
[
2
][
1
]
+
4
*
D
[
2
][
5
]
-
4
*
D
[
2
][
9
]
-
8
*
D
[
3
][
6
]
-
8
*
D
[
3
][
8
]
+
4
*
D
[
4
][
1
]
-
4
*
D
[
4
][
5
]
+
4
*
D
[
4
][
9
]
+
4
*
D
[
5
][
2
]
-
4
*
D
[
5
][
4
]
-
8
*
D
[
6
][
3
]
+
8
*
D
[
6
][
7
]
+
8
*
D
[
7
][
6
]
+
8
*
D
[
7
][
8
]
-
8
*
D
[
8
][
3
]
+
8
*
D
[
8
][
7
]
-
4
*
D
[
9
][
2
]
+
4
*
D
[
9
][
4
];
// s2 * s3
f2coeff
[
6
]
=
6
*
D
[
5
][
6
]
-
6
*
D
[
1
][
8
]
-
6
*
D
[
1
][
6
]
+
6
*
D
[
5
][
8
]
-
6
*
D
[
6
][
1
]
+
6
*
D
[
6
][
5
]
-
6
*
D
[
6
][
9
]
-
6
*
D
[
8
][
1
]
+
6
*
D
[
8
][
5
]
-
6
*
D
[
8
][
9
]
-
6
*
D
[
9
][
6
]
-
6
*
D
[
9
][
8
];
// s2^2 * s3
f2coeff
[
7
]
=
4
*
D
[
1
][
1
]
-
4
*
D
[
1
][
5
]
+
4
*
D
[
1
][
9
]
-
4
*
D
[
5
][
1
]
+
4
*
D
[
5
][
5
]
-
4
*
D
[
5
][
9
]
+
4
*
D
[
9
][
1
]
-
4
*
D
[
9
][
5
]
+
4
*
D
[
9
][
9
];
// s2^3
f2coeff
[
8
]
=
2
*
D
[
2
][
9
]
-
2
*
D
[
1
][
4
]
-
2
*
D
[
2
][
1
]
-
2
*
D
[
2
][
5
]
-
2
*
D
[
1
][
2
]
+
4
*
D
[
3
][
6
]
+
4
*
D
[
3
][
8
]
-
2
*
D
[
4
][
1
]
-
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
-
2
*
D
[
5
][
2
]
-
2
*
D
[
5
][
4
]
+
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
+
4
*
D
[
7
][
8
]
+
4
*
D
[
8
][
3
]
+
4
*
D
[
8
][
7
]
+
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s1 * s3^2
f2coeff
[
9
]
=
2
*
D
[
1
][
2
]
+
2
*
D
[
1
][
4
]
+
2
*
D
[
2
][
1
]
+
2
*
D
[
2
][
5
]
+
2
*
D
[
2
][
9
]
-
4
*
D
[
3
][
6
]
+
4
*
D
[
3
][
8
]
+
2
*
D
[
4
][
1
]
+
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
+
2
*
D
[
5
][
2
]
+
2
*
D
[
5
][
4
]
-
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
-
4
*
D
[
7
][
8
]
+
4
*
D
[
8
][
3
]
-
4
*
D
[
8
][
7
]
+
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s1
f2coeff
[
10
]
=
2
*
D
[
1
][
6
]
+
2
*
D
[
1
][
8
]
-
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
-
4
*
D
[
3
][
2
]
+
4
*
D
[
3
][
4
]
+
4
*
D
[
4
][
3
]
-
4
*
D
[
4
][
7
]
+
2
*
D
[
5
][
6
]
+
2
*
D
[
5
][
8
]
+
2
*
D
[
6
][
1
]
+
2
*
D
[
6
][
5
]
+
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
-
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
+
2
*
D
[
8
][
5
]
+
2
*
D
[
8
][
9
]
+
2
*
D
[
9
][
6
]
+
2
*
D
[
9
][
8
];
// s3
f2coeff
[
11
]
=
8
*
D
[
3
][
3
]
-
4
*
D
[
1
][
9
]
-
4
*
D
[
1
][
1
]
-
8
*
D
[
3
][
7
]
+
4
*
D
[
5
][
5
]
-
8
*
D
[
7
][
3
]
+
8
*
D
[
7
][
7
]
-
4
*
D
[
9
][
1
]
-
4
*
D
[
9
][
9
];
// s2
f2coeff
[
12
]
=
4
*
D
[
1
][
1
]
-
4
*
D
[
5
][
5
]
+
4
*
D
[
5
][
9
]
+
8
*
D
[
6
][
6
]
+
8
*
D
[
6
][
8
]
+
8
*
D
[
8
][
6
]
+
8
*
D
[
8
][
8
]
+
4
*
D
[
9
][
5
]
-
4
*
D
[
9
][
9
];
// s2 * s3^2
f2coeff
[
13
]
=
2
*
D
[
1
][
7
]
-
2
*
D
[
1
][
3
]
+
4
*
D
[
2
][
6
]
-
4
*
D
[
2
][
8
]
-
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
+
2
*
D
[
3
][
9
]
+
4
*
D
[
4
][
6
]
-
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
-
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
+
4
*
D
[
6
][
4
]
+
2
*
D
[
7
][
1
]
-
2
*
D
[
7
][
5
]
-
2
*
D
[
7
][
9
]
-
4
*
D
[
8
][
2
]
-
4
*
D
[
8
][
4
]
+
2
*
D
[
9
][
3
]
-
2
*
D
[
9
][
7
];
// s1^2
f2coeff
[
14
]
=
2
*
D
[
1
][
3
]
-
2
*
D
[
1
][
7
]
+
4
*
D
[
2
][
6
]
+
4
*
D
[
2
][
8
]
+
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
-
2
*
D
[
3
][
9
]
-
4
*
D
[
4
][
6
]
-
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
-
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
-
4
*
D
[
6
][
4
]
-
2
*
D
[
7
][
1
]
-
2
*
D
[
7
][
5
]
+
2
*
D
[
7
][
9
]
+
4
*
D
[
8
][
2
]
-
4
*
D
[
8
][
4
]
-
2
*
D
[
9
][
3
]
+
2
*
D
[
9
][
7
];
// s3^2
f2coeff
[
15
]
=
6
*
D
[
1
][
3
]
-
6
*
D
[
1
][
7
]
+
6
*
D
[
3
][
1
]
-
6
*
D
[
3
][
5
]
+
6
*
D
[
3
][
9
]
-
6
*
D
[
5
][
3
]
+
6
*
D
[
5
][
7
]
-
6
*
D
[
7
][
1
]
+
6
*
D
[
7
][
5
]
-
6
*
D
[
7
][
9
]
+
6
*
D
[
9
][
3
]
-
6
*
D
[
9
][
7
];
// s2^2
f2coeff
[
16
]
=
2
*
D
[
6
][
9
]
-
2
*
D
[
1
][
8
]
-
2
*
D
[
5
][
6
]
-
2
*
D
[
5
][
8
]
-
2
*
D
[
6
][
1
]
-
2
*
D
[
6
][
5
]
-
2
*
D
[
1
][
6
]
-
2
*
D
[
8
][
1
]
-
2
*
D
[
8
][
5
]
+
2
*
D
[
8
][
9
]
+
2
*
D
[
9
][
6
]
+
2
*
D
[
9
][
8
];
// s3^3
f2coeff
[
17
]
=
8
*
D
[
2
][
6
]
-
4
*
D
[
1
][
7
]
-
4
*
D
[
1
][
3
]
+
8
*
D
[
2
][
8
]
-
4
*
D
[
3
][
1
]
+
4
*
D
[
3
][
5
]
-
4
*
D
[
3
][
9
]
+
8
*
D
[
4
][
6
]
+
8
*
D
[
4
][
8
]
+
4
*
D
[
5
][
3
]
+
4
*
D
[
5
][
7
]
+
8
*
D
[
6
][
2
]
+
8
*
D
[
6
][
4
]
-
4
*
D
[
7
][
1
]
+
4
*
D
[
7
][
5
]
-
4
*
D
[
7
][
9
]
+
8
*
D
[
8
][
2
]
+
8
*
D
[
8
][
4
]
-
4
*
D
[
9
][
3
]
-
4
*
D
[
9
][
7
];
// s1 * s2 * s3
f2coeff
[
18
]
=
6
*
D
[
2
][
5
]
-
6
*
D
[
1
][
4
]
-
6
*
D
[
2
][
1
]
-
6
*
D
[
1
][
2
]
-
6
*
D
[
2
][
9
]
-
6
*
D
[
4
][
1
]
+
6
*
D
[
4
][
5
]
-
6
*
D
[
4
][
9
]
+
6
*
D
[
5
][
2
]
+
6
*
D
[
5
][
4
]
-
6
*
D
[
9
][
2
]
-
6
*
D
[
9
][
4
];
// s1 * s2^2
f2coeff
[
19
]
=
2
*
D
[
1
][
6
]
+
2
*
D
[
1
][
8
]
+
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
+
4
*
D
[
3
][
2
]
+
4
*
D
[
3
][
4
]
+
4
*
D
[
4
][
3
]
+
4
*
D
[
4
][
7
]
-
2
*
D
[
5
][
6
]
-
2
*
D
[
5
][
8
]
+
2
*
D
[
6
][
1
]
-
2
*
D
[
6
][
5
]
-
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
+
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
-
2
*
D
[
8
][
5
]
-
2
*
D
[
8
][
9
]
-
2
*
D
[
9
][
6
]
-
2
*
D
[
9
][
8
];
// s1^2 * s3
f2coeff
[
20
]
=
2
*
D
[
1
][
2
]
+
2
*
D
[
1
][
4
]
+
2
*
D
[
2
][
1
]
-
2
*
D
[
2
][
5
]
-
2
*
D
[
2
][
9
]
+
2
*
D
[
4
][
1
]
-
2
*
D
[
4
][
5
]
-
2
*
D
[
4
][
9
]
-
2
*
D
[
5
][
2
]
-
2
*
D
[
5
][
4
]
-
2
*
D
[
9
][
2
]
-
2
*
D
[
9
][
4
];
// s1^3
// F3 COEFFICIENT
f3coeff
[
1
]
=
2
*
D
[
1
][
2
]
-
2
*
D
[
1
][
4
]
+
2
*
D
[
2
][
1
]
+
2
*
D
[
2
][
5
]
+
2
*
D
[
2
][
9
]
-
2
*
D
[
4
][
1
]
-
2
*
D
[
4
][
5
]
-
2
*
D
[
4
][
9
]
+
2
*
D
[
5
][
2
]
-
2
*
D
[
5
][
4
]
+
2
*
D
[
9
][
2
]
-
2
*
D
[
9
][
4
];
// constant term
f3coeff
[
2
]
=
2
*
D
[
1
][
6
]
+
2
*
D
[
1
][
8
]
+
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
+
4
*
D
[
3
][
2
]
+
4
*
D
[
3
][
4
]
+
4
*
D
[
4
][
3
]
+
4
*
D
[
4
][
7
]
-
2
*
D
[
5
][
6
]
-
2
*
D
[
5
][
8
]
+
2
*
D
[
6
][
1
]
-
2
*
D
[
6
][
5
]
-
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
+
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
-
2
*
D
[
8
][
5
]
-
2
*
D
[
8
][
9
]
-
2
*
D
[
9
][
6
]
-
2
*
D
[
9
][
8
];
// s1^2 * s2
f3coeff
[
3
]
=
8
*
D
[
2
][
2
]
-
8
*
D
[
3
][
3
]
-
8
*
D
[
4
][
4
]
+
8
*
D
[
6
][
6
]
+
8
*
D
[
7
][
7
]
-
8
*
D
[
8
][
8
];
// s1 * s2
f3coeff
[
4
]
=
4
*
D
[
1
][
8
]
-
4
*
D
[
1
][
6
]
+
8
*
D
[
2
][
3
]
+
8
*
D
[
2
][
7
]
+
8
*
D
[
3
][
2
]
-
8
*
D
[
3
][
4
]
-
8
*
D
[
4
][
3
]
-
8
*
D
[
4
][
7
]
-
4
*
D
[
5
][
6
]
+
4
*
D
[
5
][
8
]
-
4
*
D
[
6
][
1
]
-
4
*
D
[
6
][
5
]
+
4
*
D
[
6
][
9
]
+
8
*
D
[
7
][
2
]
-
8
*
D
[
7
][
4
]
+
4
*
D
[
8
][
1
]
+
4
*
D
[
8
][
5
]
-
4
*
D
[
8
][
9
]
+
4
*
D
[
9
][
6
]
-
4
*
D
[
9
][
8
];
// s1 * s3
f3coeff
[
5
]
=
4
*
D
[
1
][
3
]
-
4
*
D
[
1
][
7
]
+
8
*
D
[
2
][
6
]
+
8
*
D
[
2
][
8
]
+
4
*
D
[
3
][
1
]
+
4
*
D
[
3
][
5
]
-
4
*
D
[
3
][
9
]
-
8
*
D
[
4
][
6
]
-
8
*
D
[
4
][
8
]
+
4
*
D
[
5
][
3
]
-
4
*
D
[
5
][
7
]
+
8
*
D
[
6
][
2
]
-
8
*
D
[
6
][
4
]
-
4
*
D
[
7
][
1
]
-
4
*
D
[
7
][
5
]
+
4
*
D
[
7
][
9
]
+
8
*
D
[
8
][
2
]
-
8
*
D
[
8
][
4
]
-
4
*
D
[
9
][
3
]
+
4
*
D
[
9
][
7
];
// s2 * s3
f3coeff
[
6
]
=
4
*
D
[
1
][
1
]
-
4
*
D
[
5
][
5
]
+
4
*
D
[
5
][
9
]
+
8
*
D
[
6
][
6
]
+
8
*
D
[
6
][
8
]
+
8
*
D
[
8
][
6
]
+
8
*
D
[
8
][
8
]
+
4
*
D
[
9
][
5
]
-
4
*
D
[
9
][
9
];
// s2^2 * s3
f3coeff
[
7
]
=
2
*
D
[
5
][
6
]
-
2
*
D
[
1
][
8
]
-
2
*
D
[
1
][
6
]
+
2
*
D
[
5
][
8
]
-
2
*
D
[
6
][
1
]
+
2
*
D
[
6
][
5
]
-
2
*
D
[
6
][
9
]
-
2
*
D
[
8
][
1
]
+
2
*
D
[
8
][
5
]
-
2
*
D
[
8
][
9
]
-
2
*
D
[
9
][
6
]
-
2
*
D
[
9
][
8
];
// s2^3
f3coeff
[
8
]
=
6
*
D
[
3
][
9
]
-
6
*
D
[
1
][
7
]
-
6
*
D
[
3
][
1
]
-
6
*
D
[
3
][
5
]
-
6
*
D
[
1
][
3
]
-
6
*
D
[
5
][
3
]
-
6
*
D
[
5
][
7
]
-
6
*
D
[
7
][
1
]
-
6
*
D
[
7
][
5
]
+
6
*
D
[
7
][
9
]
+
6
*
D
[
9
][
3
]
+
6
*
D
[
9
][
7
];
// s1 * s3^2
f3coeff
[
9
]
=
2
*
D
[
1
][
3
]
+
2
*
D
[
1
][
7
]
+
4
*
D
[
2
][
6
]
-
4
*
D
[
2
][
8
]
+
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
+
2
*
D
[
3
][
9
]
-
4
*
D
[
4
][
6
]
+
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
+
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
-
4
*
D
[
6
][
4
]
+
2
*
D
[
7
][
1
]
+
2
*
D
[
7
][
5
]
+
2
*
D
[
7
][
9
]
-
4
*
D
[
8
][
2
]
+
4
*
D
[
8
][
4
]
+
2
*
D
[
9
][
3
]
+
2
*
D
[
9
][
7
];
// s1
f3coeff
[
10
]
=
8
*
D
[
2
][
2
]
-
4
*
D
[
1
][
5
]
-
4
*
D
[
1
][
1
]
-
8
*
D
[
2
][
4
]
-
8
*
D
[
4
][
2
]
+
8
*
D
[
4
][
4
]
-
4
*
D
[
5
][
1
]
-
4
*
D
[
5
][
5
]
+
4
*
D
[
9
][
9
];
// s3
f3coeff
[
11
]
=
2
*
D
[
1
][
6
]
+
2
*
D
[
1
][
8
]
-
4
*
D
[
2
][
3
]
+
4
*
D
[
2
][
7
]
-
4
*
D
[
3
][
2
]
+
4
*
D
[
3
][
4
]
+
4
*
D
[
4
][
3
]
-
4
*
D
[
4
][
7
]
+
2
*
D
[
5
][
6
]
+
2
*
D
[
5
][
8
]
+
2
*
D
[
6
][
1
]
+
2
*
D
[
6
][
5
]
+
2
*
D
[
6
][
9
]
+
4
*
D
[
7
][
2
]
-
4
*
D
[
7
][
4
]
+
2
*
D
[
8
][
1
]
+
2
*
D
[
8
][
5
]
+
2
*
D
[
8
][
9
]
+
2
*
D
[
9
][
6
]
+
2
*
D
[
9
][
8
];
// s2
f3coeff
[
12
]
=
6
*
D
[
6
][
9
]
-
6
*
D
[
1
][
8
]
-
6
*
D
[
5
][
6
]
-
6
*
D
[
5
][
8
]
-
6
*
D
[
6
][
1
]
-
6
*
D
[
6
][
5
]
-
6
*
D
[
1
][
6
]
-
6
*
D
[
8
][
1
]
-
6
*
D
[
8
][
5
]
+
6
*
D
[
8
][
9
]
+
6
*
D
[
9
][
6
]
+
6
*
D
[
9
][
8
];
// s2 * s3^2
f3coeff
[
13
]
=
2
*
D
[
1
][
2
]
-
2
*
D
[
1
][
4
]
+
2
*
D
[
2
][
1
]
-
2
*
D
[
2
][
5
]
-
2
*
D
[
2
][
9
]
+
4
*
D
[
3
][
6
]
-
4
*
D
[
3
][
8
]
-
2
*
D
[
4
][
1
]
+
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
-
2
*
D
[
5
][
2
]
+
2
*
D
[
5
][
4
]
+
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
-
4
*
D
[
7
][
8
]
-
4
*
D
[
8
][
3
]
-
4
*
D
[
8
][
7
]
-
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s1^2
f3coeff
[
14
]
=
6
*
D
[
1
][
4
]
-
6
*
D
[
1
][
2
]
-
6
*
D
[
2
][
1
]
-
6
*
D
[
2
][
5
]
+
6
*
D
[
2
][
9
]
+
6
*
D
[
4
][
1
]
+
6
*
D
[
4
][
5
]
-
6
*
D
[
4
][
9
]
-
6
*
D
[
5
][
2
]
+
6
*
D
[
5
][
4
]
+
6
*
D
[
9
][
2
]
-
6
*
D
[
9
][
4
];
// s3^2
f3coeff
[
15
]
=
2
*
D
[
1
][
4
]
-
2
*
D
[
1
][
2
]
-
2
*
D
[
2
][
1
]
+
2
*
D
[
2
][
5
]
-
2
*
D
[
2
][
9
]
-
4
*
D
[
3
][
6
]
-
4
*
D
[
3
][
8
]
+
2
*
D
[
4
][
1
]
-
2
*
D
[
4
][
5
]
+
2
*
D
[
4
][
9
]
+
2
*
D
[
5
][
2
]
-
2
*
D
[
5
][
4
]
-
4
*
D
[
6
][
3
]
+
4
*
D
[
6
][
7
]
+
4
*
D
[
7
][
6
]
+
4
*
D
[
7
][
8
]
-
4
*
D
[
8
][
3
]
+
4
*
D
[
8
][
7
]
-
2
*
D
[
9
][
2
]
+
2
*
D
[
9
][
4
];
// s2^2
f3coeff
[
16
]
=
4
*
D
[
1
][
1
]
+
4
*
D
[
1
][
5
]
-
4
*
D
[
1
][
9
]
+
4
*
D
[
5
][
1
]
+
4
*
D
[
5
][
5
]
-
4
*
D
[
5
][
9
]
-
4
*
D
[
9
][
1
]
-
4
*
D
[
9
][
5
]
+
4
*
D
[
9
][
9
];
// s3^3
f3coeff
[
17
]
=
4
*
D
[
2
][
9
]
-
4
*
D
[
1
][
4
]
-
4
*
D
[
2
][
1
]
-
4
*
D
[
2
][
5
]
-
4
*
D
[
1
][
2
]
+
8
*
D
[
3
][
6
]
+
8
*
D
[
3
][
8
]
-
4
*
D
[
4
][
1
]
-
4
*
D
[
4
][
5
]
+
4
*
D
[
4
][
9
]
-
4
*
D
[
5
][
2
]
-
4
*
D
[
5
][
4
]
+
8
*
D
[
6
][
3
]
+
8
*
D
[
6
][
7
]
+
8
*
D
[
7
][
6
]
+
8
*
D
[
7
][
8
]
+
8
*
D
[
8
][
3
]
+
8
*
D
[
8
][
7
]
+
4
*
D
[
9
][
2
]
+
4
*
D
[
9
][
4
];
// s1 * s2 * s3
f3coeff
[
18
]
=
4
*
D
[
2
][
6
]
-
2
*
D
[
1
][
7
]
-
2
*
D
[
1
][
3
]
+
4
*
D
[
2
][
8
]
-
2
*
D
[
3
][
1
]
+
2
*
D
[
3
][
5
]
-
2
*
D
[
3
][
9
]
+
4
*
D
[
4
][
6
]
+
4
*
D
[
4
][
8
]
+
2
*
D
[
5
][
3
]
+
2
*
D
[
5
][
7
]
+
4
*
D
[
6
][
2
]
+
4
*
D
[
6
][
4
]
-
2
*
D
[
7
][
1
]
+
2
*
D
[
7
][
5
]
-
2
*
D
[
7
][
9
]
+
4
*
D
[
8
][
2
]
+
4
*
D
[
8
][
4
]
-
2
*
D
[
9
][
3
]
-
2
*
D
[
9
][
7
];
// s1 * s2^2
f3coeff
[
19
]
=
4
*
D
[
1
][
9
]
-
4
*
D
[
1
][
1
]
+
8
*
D
[
3
][
3
]
+
8
*
D
[
3
][
7
]
+
4
*
D
[
5
][
5
]
+
8
*
D
[
7
][
3
]
+
8
*
D
[
7
][
7
]
+
4
*
D
[
9
][
1
]
-
4
*
D
[
9
][
9
];
// s1^2 * s3
f3coeff
[
20
]
=
2
*
D
[
1
][
3
]
+
2
*
D
[
1
][
7
]
+
2
*
D
[
3
][
1
]
-
2
*
D
[
3
][
5
]
-
2
*
D
[
3
][
9
]
-
2
*
D
[
5
][
3
]
-
2
*
D
[
5
][
7
]
+
2
*
D
[
7
][
1
]
-
2
*
D
[
7
][
5
]
-
2
*
D
[
7
][
9
]
-
2
*
D
[
9
][
3
]
-
2
*
D
[
9
][
7
];
// s1^3
// genereate random samples
std
::
vector
<
double
>
u
;
cv
::
randn
(
u
,
100
,
0.1
);
cv
::
Mat
M2
=
cayley_LS_M
(
f1coeff
,
f2coeff
,
f3coeff
,
u
);
}
cv
::
Mat
dls
::
LeftMultVec
(
const
cv
::
Mat
&
v
)
{
cv
::
Mat
mat
,
row1
,
row2
,
row3
;
cv
::
hconcat
(
v
.
clone
().
t
(),
cv
::
Mat
::
zeros
(
1
,
6
,
v
.
type
()),
row1
);
cv
::
hconcat
(
cv
::
Mat
::
zeros
(
1
,
3
,
v
.
type
()),
v
.
clone
().
t
(),
row2
);
cv
::
hconcat
(
row2
,
cv
::
Mat
::
zeros
(
1
,
3
,
v
.
type
()),
row2
);
cv
::
hconcat
(
cv
::
Mat
::
zeros
(
1
,
6
,
v
.
type
()),
v
.
clone
().
t
(),
row3
);
mat
.
push_back
(
row1
);
mat
.
push_back
(
row2
);
mat
.
push_back
(
row3
);
return
mat
;
}
cv
::
Mat
cayley_LS_M
(
const
std
::
vector
<
double
>&
a
,
const
std
::
vector
<
double
>&
b
,
const
std
::
vector
<
double
>&
c
,
const
std
::
vector
<
double
>&
u
)
{
std
::
vector
<
std
::
vector
<
double
[
120
]
>
>
M
(
120
);
M
[
0
]
=
{
u
[
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
,
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
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
,
c
[
1
],
0
};
M
[
1
]
=
{
u
[
4
],
u
[
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
,
a
[
1
],
a
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
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
,
b
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
};
M
[
2
]
=
{
0
,
u
[
4
],
u
[
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
,
a
[
10
],
a
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
0
,
b
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
14
],
0
};
M
[
3
]
=
{
u
[
3
],
0
,
0
,
u
[
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
,
a
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
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
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
11
],
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
,
c
[
11
],
c
[
1
]};
M
[
4
]
=
{
0
,
u
[
3
],
0
,
u
[
4
],
u
[
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
,
a
[
11
],
a
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
0
,
0
,
0
,
b
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
b
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
5
],
c
[
10
]};
M
[
5
]
=
{
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
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
,
a
[
5
],
a
[
12
],
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
a
[
10
],
0
,
0
,
0
,
0
,
0
,
a
[
14
],
0
,
a
[
11
],
0
,
0
,
b
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
b
[
11
],
0
,
0
,
0
,
0
,
0
,
b
[
10
],
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
5
],
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
c
[
14
]};
M
[
6
]
=
{
0
,
0
,
0
,
u
[
3
],
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
0
,
0
,
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
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
,
b
[
1
],
b
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
15
],
c
[
11
]};
M
[
7
]
=
{
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
0
,
0
,
a
[
15
],
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
0
,
a
[
1
],
0
,
0
,
0
,
a
[
5
],
0
,
0
,
0
,
0
,
b
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
11
],
0
,
0
,
0
,
b
[
10
],
b
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
15
],
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
c
[
6
],
c
[
5
]};
M
[
8
]
=
{
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
14
],
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
0
,
a
[
5
],
0
,
a
[
10
],
a
[
1
],
0
,
0
,
a
[
12
],
0
,
a
[
15
],
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
11
],
b
[
10
],
0
,
b
[
15
],
b
[
1
],
0
,
0
,
0
,
0
,
b
[
5
],
0
,
0
,
0
,
b
[
14
],
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
],
c
[
5
],
0
,
c
[
1
],
0
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
0
,
c
[
11
],
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
]};
M
[
9
]
=
{
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
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
,
a
[
9
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
b
[
1
],
0
,
0
,
0
,
c
[
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
,
c
[
9
],
0
};
M
[
10
]
=
{
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
a
[
9
],
a
[
4
],
a
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
4
],
b
[
10
],
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
c
[
4
],
0
};
M
[
11
]
=
{
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
0
,
0
,
0
,
a
[
10
],
a
[
4
],
a
[
8
],
a
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
9
],
0
,
0
,
b
[
4
],
0
,
0
,
b
[
1
],
0
,
b
[
10
],
0
,
0
,
0
,
0
,
0
,
b
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
b
[
14
],
0
,
0
,
0
,
c
[
14
],
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
c
[
10
],
c
[
8
],
0
};
M
[
12
]
=
{
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
3
],
a
[
11
],
0
,
0
,
a
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
9
],
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
,
b
[
9
],
0
,
0
,
b
[
1
],
0
,
0
,
0
,
b
[
3
],
b
[
11
],
0
,
0
,
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
3
],
c
[
9
]};
M
[
13
]
=
{
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
3
],
a
[
17
],
a
[
5
],
0
,
0
,
a
[
10
],
0
,
0
,
0
,
a
[
9
],
0
,
0
,
0
,
a
[
1
],
0
,
a
[
4
],
0
,
0
,
0
,
0
,
b
[
3
],
0
,
0
,
0
,
0
,
b
[
11
],
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
0
,
0
,
0
,
0
,
b
[
4
],
0
,
0
,
b
[
10
],
0
,
0
,
0
,
b
[
17
],
b
[
5
],
0
,
0
,
0
,
c
[
5
],
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
c
[
3
],
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
c
[
17
],
c
[
4
]};
M
[
14
]
=
{
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
0
,
0
,
0
,
0
,
a
[
5
],
a
[
17
],
0
,
a
[
12
],
0
,
0
,
a
[
14
],
0
,
a
[
9
],
a
[
1
],
a
[
4
],
0
,
0
,
0
,
a
[
10
],
0
,
a
[
8
],
0
,
a
[
3
],
0
,
0
,
b
[
17
],
0
,
b
[
1
],
b
[
11
],
0
,
b
[
5
],
b
[
10
],
0
,
b
[
9
],
0
,
0
,
b
[
3
],
0
,
0
,
0
,
0
,
0
,
b
[
4
],
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
c
[
12
],
c
[
3
],
c
[
10
],
0
,
0
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
c
[
17
],
c
[
4
],
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
c
[
11
],
0
,
0
,
c
[
5
],
0
,
c
[
8
]};
M
[
15
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
a
[
9
],
0
,
0
,
0
,
0
,
a
[
18
],
a
[
15
],
0
,
0
,
a
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
b
[
9
],
b
[
3
],
0
,
0
,
b
[
11
],
0
,
0
,
0
,
b
[
18
],
b
[
15
],
0
,
0
,
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
c
[
3
]};
M
[
16
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
a
[
4
],
0
,
0
,
a
[
15
],
a
[
18
],
0
,
a
[
6
],
0
,
0
,
a
[
5
],
0
,
0
,
0
,
a
[
3
],
a
[
1
],
a
[
9
],
0
,
a
[
11
],
0
,
a
[
17
],
0
,
0
,
0
,
0
,
b
[
18
],
0
,
0
,
0
,
0
,
b
[
15
],
b
[
11
],
0
,
0
,
b
[
9
],
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
b
[
3
],
0
,
0
,
b
[
10
],
b
[
4
],
b
[
17
],
0
,
0
,
b
[
5
],
0
,
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
c
[
6
],
0
,
c
[
11
],
0
,
0
,
0
,
c
[
10
],
0
,
c
[
5
],
c
[
1
],
0
,
c
[
18
],
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
4
],
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
c
[
15
],
0
,
c
[
17
]};
M
[
17
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
a
[
14
],
a
[
8
],
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
a
[
3
],
a
[
11
],
a
[
17
],
a
[
10
],
a
[
4
],
a
[
9
],
a
[
5
],
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
0
,
b
[
11
],
b
[
15
],
0
,
b
[
6
],
b
[
5
],
0
,
b
[
3
],
b
[
4
],
0
,
b
[
18
],
b
[
9
],
0
,
b
[
10
],
0
,
0
,
b
[
17
],
0
,
0
,
b
[
14
],
b
[
8
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
c
[
5
],
0
,
0
,
0
,
c
[
14
],
0
,
c
[
12
],
c
[
10
],
0
,
0
,
c
[
17
],
0
,
c
[
9
],
0
,
0
,
0
,
c
[
11
],
c
[
8
],
0
,
0
,
0
,
c
[
3
],
c
[
4
],
0
,
c
[
15
],
0
,
0
,
c
[
6
],
0
,
0
};
M
[
18
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
13
],
a
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
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
,
b
[
1
],
b
[
13
],
b
[
9
],
0
,
0
,
c
[
1
],
c
[
9
],
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
,
c
[
13
],
0
};
M
[
19
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
a
[
9
],
a
[
13
],
a
[
19
],
a
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
b
[
13
],
0
,
0
,
0
,
0
,
b
[
9
],
0
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
10
],
b
[
19
],
b
[
4
],
0
,
0
,
c
[
10
],
c
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
c
[
9
],
c
[
19
],
0
};
M
[
20
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
a
[
9
],
0
,
0
,
0
,
a
[
10
],
a
[
4
],
a
[
19
],
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
13
],
0
,
a
[
14
],
b
[
19
],
b
[
1
],
0
,
b
[
9
],
0
,
b
[
4
],
0
,
b
[
10
],
0
,
0
,
0
,
b
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
b
[
8
],
0
,
0
,
c
[
14
],
c
[
8
],
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
c
[
9
],
0
,
c
[
10
],
c
[
4
],
0
,
0
};
M
[
21
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
2
],
a
[
3
],
0
,
a
[
1
],
a
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
13
],
0
,
0
,
0
,
a
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
0
,
b
[
1
],
b
[
9
],
0
,
0
,
b
[
11
],
b
[
2
],
b
[
3
],
0
,
0
,
c
[
11
],
c
[
3
],
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
c
[
13
]};
M
[
22
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
3
],
a
[
2
],
0
,
a
[
17
],
0
,
a
[
10
],
a
[
4
],
a
[
1
],
0
,
0
,
a
[
13
],
0
,
0
,
0
,
a
[
9
],
0
,
a
[
19
],
0
,
0
,
0
,
a
[
5
],
b
[
2
],
0
,
0
,
0
,
0
,
b
[
3
],
b
[
9
],
b
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
b
[
1
],
0
,
0
,
0
,
b
[
19
],
0
,
b
[
10
],
b
[
4
],
0
,
0
,
b
[
5
],
0
,
b
[
17
],
0
,
0
,
c
[
5
],
c
[
17
],
0
,
c
[
9
],
0
,
c
[
10
],
0
,
0
,
c
[
1
],
c
[
4
],
0
,
0
,
c
[
2
],
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
c
[
3
],
0
,
c
[
19
]};
M
[
23
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
a
[
11
],
a
[
3
],
0
,
0
,
0
,
a
[
5
],
a
[
17
],
0
,
0
,
0
,
0
,
a
[
14
],
a
[
8
],
a
[
10
],
a
[
13
],
a
[
9
],
a
[
19
],
0
,
0
,
0
,
a
[
4
],
0
,
0
,
0
,
a
[
2
],
0
,
a
[
12
],
0
,
b
[
11
],
b
[
9
],
b
[
3
],
0
,
b
[
17
],
b
[
4
],
b
[
5
],
b
[
13
],
0
,
0
,
b
[
2
],
0
,
0
,
0
,
0
,
0
,
b
[
19
],
b
[
10
],
0
,
0
,
0
,
0
,
0
,
b
[
14
],
b
[
8
],
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
c
[
12
],
0
,
c
[
2
],
c
[
4
],
0
,
c
[
14
],
0
,
0
,
c
[
10
],
c
[
8
],
0
,
0
,
0
,
c
[
19
],
0
,
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
c
[
13
],
0
,
c
[
11
],
c
[
3
],
0
,
c
[
5
],
c
[
17
],
0
,
0
};
M
[
24
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
u
[
1
],
0
,
0
,
0
,
0
,
a
[
9
],
a
[
13
],
0
,
0
,
0
,
0
,
0
,
a
[
18
],
0
,
a
[
11
],
a
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
2
],
0
,
0
,
a
[
1
],
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
b
[
9
],
b
[
13
],
b
[
2
],
0
,
b
[
11
],
b
[
3
],
0
,
0
,
b
[
15
],
0
,
b
[
18
],
0
,
0
,
c
[
15
],
c
[
18
],
0
,
0
,
0
,
c
[
11
],
c
[
1
],
c
[
9
],
0
,
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
]};
M
[
25
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
0
,
0
,
0
,
a
[
4
],
a
[
19
],
0
,
a
[
15
],
a
[
18
],
0
,
0
,
0
,
0
,
a
[
5
],
a
[
17
],
a
[
11
],
0
,
0
,
a
[
2
],
a
[
9
],
a
[
13
],
0
,
a
[
3
],
0
,
0
,
0
,
0
,
a
[
10
],
a
[
6
],
0
,
0
,
0
,
0
,
0
,
b
[
18
],
b
[
3
],
b
[
15
],
0
,
b
[
13
],
0
,
0
,
0
,
0
,
b
[
9
],
0
,
0
,
b
[
2
],
b
[
11
],
b
[
10
],
b
[
4
],
b
[
19
],
0
,
0
,
b
[
5
],
b
[
17
],
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
c
[
3
],
0
,
c
[
5
],
c
[
10
],
c
[
4
],
c
[
11
],
c
[
17
],
c
[
9
],
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
c
[
15
],
c
[
18
],
0
,
0
};
M
[
26
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
u
[
4
],
u
[
1
],
a
[
15
],
a
[
18
],
a
[
8
],
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
a
[
5
],
a
[
2
],
a
[
3
],
0
,
a
[
4
],
a
[
19
],
a
[
13
],
a
[
17
],
0
,
0
,
0
,
0
,
a
[
14
],
0
,
0
,
b
[
15
],
b
[
3
],
b
[
18
],
0
,
0
,
b
[
17
],
b
[
6
],
b
[
2
],
b
[
19
],
0
,
0
,
b
[
13
],
0
,
b
[
4
],
0
,
0
,
0
,
b
[
5
],
b
[
14
],
b
[
8
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
17
],
0
,
c
[
12
],
c
[
14
],
c
[
8
],
c
[
5
],
0
,
c
[
4
],
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
c
[
3
],
0
,
0
,
0
,
0
,
c
[
2
],
c
[
19
],
c
[
15
],
c
[
18
],
0
,
c
[
6
],
0
,
0
,
0
};
M
[
27
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
3
],
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
b
[
1
],
0
,
0
,
0
,
b
[
11
],
b
[
3
],
b
[
18
],
0
,
0
,
b
[
15
],
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
c
[
7
],
0
,
0
,
c
[
1
],
0
,
0
,
c
[
11
],
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
3
],
0
,
0
,
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
]};
M
[
28
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
0
,
b
[
11
],
b
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
c
[
15
]};
M
[
29
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
a
[
3
],
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
b
[
9
],
0
,
0
,
b
[
11
],
b
[
3
],
b
[
2
],
0
,
0
,
b
[
15
],
b
[
18
],
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
c
[
9
],
c
[
15
],
c
[
11
],
c
[
3
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
0
,
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
b
[
2
],
0
,
0
,
0
,
b
[
18
],
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
c
[
2
],
0
,
0
,
0
,
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
31
]
=
{
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
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
a
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
b
[
13
],
0
,
0
,
b
[
3
],
b
[
2
],
0
,
0
,
b
[
15
],
b
[
18
],
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
c
[
13
],
c
[
18
],
c
[
3
],
c
[
2
],
0
,
0
,
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
32
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
9
],
0
,
a
[
13
],
0
,
0
,
a
[
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
,
b
[
13
],
b
[
9
],
b
[
20
],
0
,
0
,
c
[
9
],
c
[
13
],
c
[
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
};
M
[
33
]
=
{
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
,
a
[
15
],
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
0
,
0
,
0
,
0
,
b
[
3
],
b
[
11
],
0
,
0
,
0
,
b
[
15
],
b
[
18
],
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
0
,
0
,
c
[
15
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
c
[
18
],
0
,
0
,
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
34
]
=
{
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
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
0
,
0
,
0
,
0
,
b
[
2
],
b
[
3
],
0
,
0
,
b
[
15
],
b
[
18
],
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
3
],
c
[
7
],
c
[
15
],
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
0
,
0
,
b
[
2
],
0
,
0
,
b
[
18
],
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
36
]
=
{
0
,
0
,
0
,
0
,
0
,
u
[
4
],
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
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
a
[
14
],
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
a
[
5
],
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
10
],
0
,
0
,
b
[
5
],
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
c
[
14
],
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
0
,
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
]};
M
[
37
]
=
{
0
,
0
,
u
[
4
],
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
,
a
[
14
],
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
};
M
[
38
]
=
{
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
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
1
],
0
,
0
,
0
,
0
,
b
[
11
],
0
,
0
,
0
,
0
,
0
,
b
[
15
],
b
[
7
],
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
,
c
[
1
],
0
,
0
,
0
,
c
[
15
],
0
,
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
]};
M
[
39
]
=
{
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
,
a
[
14
],
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
0
,
0
,
c
[
10
],
c
[
4
],
0
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
c
[
16
],
0
,
0
};
M
[
40
]
=
{
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
,
a
[
14
],
a
[
8
],
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
b
[
8
],
0
,
0
,
0
,
b
[
16
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
c
[
4
],
c
[
19
],
0
,
0
,
0
,
c
[
14
],
c
[
8
],
0
,
c
[
16
],
0
,
0
,
0
};
M
[
41
]
=
{
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
,
a
[
7
],
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
,
b
[
11
],
0
,
0
,
0
,
0
,
b
[
15
],
0
,
0
,
0
,
0
,
0
,
b
[
7
],
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
,
c
[
11
],
0
,
0
,
0
,
c
[
7
],
0
,
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
42
]
=
{
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
,
a
[
8
],
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
b
[
16
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
c
[
19
],
0
,
0
,
0
,
0
,
c
[
8
],
0
,
c
[
16
],
0
,
0
,
0
,
0
};
M
[
43
]
=
{
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
,
a
[
7
],
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
,
b
[
3
],
0
,
0
,
0
,
0
,
b
[
18
],
b
[
15
],
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
15
],
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
44
]
=
{
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
,
a
[
16
],
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
,
b
[
16
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
4
],
0
,
0
,
c
[
14
],
c
[
8
],
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
};
M
[
45
]
=
{
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
,
a
[
16
],
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
,
b
[
16
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
0
,
c
[
8
],
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
};
M
[
46
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
2
],
0
,
0
,
0
,
0
,
0
,
b
[
18
],
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
47
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
0
,
0
,
b
[
2
],
b
[
18
],
0
,
b
[
17
],
0
,
b
[
7
],
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
17
],
0
,
c
[
6
],
0
,
c
[
7
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
c
[
19
],
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
48
]
=
{
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
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
15
],
b
[
10
],
0
,
0
,
b
[
11
],
0
,
b
[
5
],
0
,
b
[
7
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
c
[
10
],
c
[
11
],
0
,
0
,
c
[
6
],
0
,
0
,
c
[
5
],
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
49
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
a
[
16
],
a
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
b
[
16
],
0
,
0
,
b
[
14
],
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
,
c
[
5
],
c
[
14
],
0
,
0
,
c
[
15
],
0
,
0
,
0
,
c
[
6
],
0
,
c
[
12
],
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
50
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
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
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
0
,
c
[
5
],
0
,
0
,
0
,
c
[
12
],
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
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
,
0
,
0
,
b
[
18
],
0
,
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
52
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
a
[
12
],
a
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
6
],
b
[
12
],
0
,
0
,
b
[
5
],
b
[
14
],
0
,
b
[
16
],
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
,
c
[
15
],
c
[
5
],
0
,
c
[
14
],
0
,
0
,
0
,
0
,
c
[
7
],
c
[
16
],
c
[
6
],
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
53
]
=
{
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
,
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
,
b
[
15
],
0
,
0
,
0
,
0
,
b
[
7
],
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
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
54
]
=
{
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
,
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
,
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
,
c
[
14
],
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
55
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
17
],
0
,
0
,
b
[
18
],
b
[
7
],
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
c
[
17
],
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
56
]
=
{
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
,
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
,
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
,
c
[
8
],
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
57
]
=
{
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
,
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
,
b
[
6
],
0
,
0
,
b
[
7
],
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
,
c
[
6
],
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
58
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
0
,
b
[
7
],
b
[
6
],
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
,
c
[
7
],
c
[
12
],
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
59
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
5
],
0
,
a
[
12
],
0
,
a
[
14
],
a
[
10
],
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
5
],
b
[
14
],
0
,
b
[
6
],
b
[
10
],
0
,
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
c
[
11
],
c
[
10
],
0
,
0
,
0
,
0
,
c
[
16
],
0
,
c
[
15
],
0
,
c
[
5
],
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
60
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
a
[
6
],
0
,
a
[
5
],
a
[
11
],
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
15
],
b
[
5
],
0
,
b
[
7
],
b
[
11
],
b
[
10
],
0
,
b
[
14
],
0
,
b
[
6
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
c
[
11
],
0
,
c
[
10
],
0
,
0
,
c
[
12
],
0
,
0
,
c
[
14
],
c
[
15
],
c
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
0
,
0
,
c
[
17
],
c
[
16
],
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
62
]
=
{
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
,
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
,
b
[
7
],
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
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
63
]
=
{
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
,
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
,
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
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
64
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
b
[
16
],
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
,
c
[
6
],
c
[
12
],
0
,
c
[
16
],
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
65
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
b
[
6
],
b
[
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
,
0
,
0
,
0
,
0
,
c
[
7
],
c
[
6
],
c
[
16
],
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
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
,
c
[
12
],
c
[
16
],
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
67
]
=
{
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
,
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
,
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
,
c
[
16
],
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
68
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
14
],
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
c
[
10
],
0
,
0
,
0
,
c
[
11
],
0
,
0
,
0
,
c
[
5
],
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
69
]
=
{
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
,
0
,
0
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
18
],
0
,
0
,
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
b
[
2
],
0
,
0
,
0
,
b
[
18
],
0
,
0
,
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
70
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
9
],
a
[
13
],
0
,
0
,
a
[
10
],
a
[
4
],
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
14
],
a
[
20
],
0
,
a
[
8
],
0
,
b
[
9
],
0
,
b
[
13
],
b
[
10
],
b
[
19
],
0
,
b
[
4
],
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
b
[
8
],
0
,
0
,
0
,
c
[
14
],
c
[
8
],
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
c
[
13
],
c
[
10
],
c
[
4
],
c
[
19
],
0
,
0
};
M
[
71
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
b
[
5
],
0
,
0
,
b
[
15
],
0
,
b
[
6
],
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
,
c
[
5
],
c
[
15
],
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
72
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
a
[
6
],
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
b
[
6
],
b
[
14
],
0
,
b
[
15
],
b
[
5
],
0
,
b
[
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
,
0
,
0
,
0
,
c
[
15
],
c
[
14
],
c
[
5
],
0
,
0
,
0
,
0
,
0
,
c
[
12
],
c
[
7
],
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
73
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
13
],
0
,
a
[
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
,
b
[
20
],
b
[
13
],
0
,
0
,
0
,
c
[
13
],
c
[
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
};
M
[
74
]
=
{
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
,
u
[
3
],
0
,
0
,
0
,
a
[
17
],
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
a
[
15
],
0
,
0
,
0
,
a
[
3
],
a
[
2
],
0
,
a
[
18
],
0
,
0
,
0
,
0
,
a
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
18
],
b
[
7
],
0
,
b
[
2
],
0
,
0
,
0
,
b
[
13
],
b
[
3
],
b
[
19
],
b
[
4
],
0
,
b
[
15
],
b
[
5
],
b
[
17
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
c
[
4
],
c
[
6
],
c
[
5
],
c
[
17
],
c
[
15
],
0
,
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
c
[
2
],
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
};
M
[
75
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
2
],
a
[
1
],
a
[
9
],
a
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
20
],
a
[
11
],
0
,
0
,
a
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
b
[
1
],
b
[
9
],
b
[
13
],
b
[
11
],
0
,
b
[
3
],
0
,
b
[
2
],
0
,
c
[
11
],
c
[
3
],
c
[
2
],
0
,
0
,
0
,
c
[
9
],
0
,
0
,
0
,
c
[
13
],
0
,
c
[
1
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
]};
M
[
76
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
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
,
b
[
20
],
0
,
0
,
0
,
c
[
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
};
M
[
77
]
=
{
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
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
14
],
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
c
[
1
],
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
78
]
=
{
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
,
a
[
17
],
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
a
[
8
],
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
17
],
b
[
19
],
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
0
,
c
[
16
],
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
c
[
19
],
0
,
c
[
2
],
0
,
0
,
0
,
0
,
c
[
17
],
0
,
c
[
12
],
0
,
0
,
0
,
0
};
M
[
79
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
a
[
16
],
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
b
[
16
],
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
,
c
[
16
],
0
,
0
,
0
,
c
[
17
],
c
[
8
],
0
,
0
,
c
[
18
],
c
[
12
],
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
80
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
5
],
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
a
[
4
],
a
[
10
],
a
[
8
],
0
,
0
,
0
,
a
[
14
],
0
,
0
,
0
,
a
[
17
],
0
,
0
,
0
,
0
,
b
[
10
],
b
[
5
],
0
,
b
[
12
],
b
[
14
],
0
,
b
[
4
],
0
,
0
,
b
[
17
],
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
17
],
c
[
14
],
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
c
[
8
],
c
[
9
],
0
,
0
,
0
,
0
,
c
[
10
],
0
,
c
[
11
],
c
[
3
],
0
,
c
[
4
],
0
,
0
,
c
[
5
],
0
,
0
,
c
[
12
],
0
,
0
};
M
[
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
,
a
[
3
],
a
[
2
],
0
,
0
,
0
,
0
,
a
[
4
],
a
[
19
],
0
,
a
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
20
],
a
[
5
],
0
,
a
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
3
],
0
,
b
[
20
],
b
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
0
,
0
,
0
,
0
,
b
[
4
],
b
[
19
],
0
,
b
[
17
],
b
[
5
],
0
,
0
,
0
,
c
[
5
],
c
[
17
],
0
,
0
,
0
,
c
[
20
],
0
,
c
[
19
],
0
,
0
,
c
[
13
],
0
,
0
,
c
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
3
],
c
[
2
],
0
,
0
,
0
};
M
[
82
]
=
{
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
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
a
[
18
],
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
b
[
18
],
b
[
4
],
0
,
0
,
b
[
3
],
b
[
15
],
b
[
17
],
b
[
5
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
c
[
5
],
0
,
0
,
c
[
6
],
0
,
0
,
c
[
15
],
0
,
0
,
0
,
0
,
0
,
c
[
4
],
c
[
3
],
0
,
0
,
0
,
0
,
0
,
c
[
17
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
83
]
=
{
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
,
u
[
2
],
a
[
18
],
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
a
[
17
],
0
,
a
[
2
],
0
,
a
[
19
],
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
a
[
8
],
0
,
0
,
b
[
18
],
b
[
2
],
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
b
[
19
],
0
,
0
,
0
,
b
[
17
],
b
[
8
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
c
[
17
],
0
,
c
[
19
],
c
[
12
],
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
0
,
c
[
6
],
0
,
0
,
0
,
0
};
M
[
84
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
5
],
a
[
17
],
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
a
[
18
],
a
[
11
],
a
[
3
],
0
,
a
[
15
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
b
[
15
],
0
,
0
,
b
[
3
],
0
,
0
,
0
,
b
[
9
],
b
[
11
],
b
[
4
],
b
[
10
],
b
[
18
],
0
,
0
,
b
[
5
],
b
[
17
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
15
],
c
[
10
],
0
,
0
,
c
[
5
],
0
,
c
[
6
],
c
[
11
],
0
,
0
,
c
[
18
],
0
,
0
,
0
,
c
[
9
],
0
,
0
,
c
[
17
],
0
,
0
,
c
[
4
],
0
,
c
[
3
],
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
};
M
[
85
]
=
{
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
,
u
[
2
],
0
,
0
,
0
,
a
[
19
],
0
,
a
[
15
],
a
[
18
],
0
,
0
,
0
,
0
,
a
[
5
],
a
[
17
],
0
,
a
[
3
],
0
,
0
,
0
,
a
[
13
],
a
[
20
],
0
,
a
[
2
],
0
,
0
,
a
[
6
],
0
,
a
[
4
],
0
,
0
,
0
,
0
,
0
,
b
[
15
],
0
,
b
[
2
],
b
[
18
],
0
,
b
[
20
],
0
,
0
,
0
,
0
,
b
[
13
],
0
,
0
,
0
,
b
[
3
],
b
[
4
],
b
[
19
],
0
,
0
,
b
[
5
],
b
[
17
],
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
c
[
2
],
0
,
c
[
17
],
c
[
4
],
c
[
19
],
c
[
3
],
0
,
c
[
13
],
c
[
5
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
c
[
15
],
c
[
18
],
0
,
0
,
0
};
M
[
86
]
=
{
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
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
a
[
17
],
0
,
0
,
a
[
2
],
0
,
0
,
0
,
a
[
20
],
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
b
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
b
[
2
],
b
[
19
],
0
,
0
,
0
,
b
[
17
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
c
[
2
],
0
,
c
[
20
],
c
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
18
],
0
,
0
,
0
,
0
};
M
[
87
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
3
],
a
[
2
],
0
,
0
,
0
,
a
[
10
],
a
[
4
],
a
[
19
],
a
[
9
],
0
,
0
,
a
[
20
],
0
,
0
,
0
,
a
[
13
],
0
,
0
,
a
[
5
],
0
,
0
,
a
[
17
],
0
,
0
,
0
,
0
,
b
[
11
],
b
[
2
],
b
[
13
],
b
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
b
[
9
],
0
,
0
,
0
,
0
,
b
[
10
],
b
[
4
],
b
[
19
],
b
[
5
],
0
,
b
[
17
],
0
,
0
,
0
,
c
[
5
],
c
[
17
],
0
,
0
,
c
[
13
],
0
,
c
[
4
],
0
,
0
,
c
[
9
],
c
[
19
],
0
,
c
[
10
],
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
11
],
c
[
3
],
c
[
2
],
0
,
0
};
M
[
88
]
=
{
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
,
a
[
2
],
0
,
0
,
0
,
a
[
17
],
0
,
0
,
0
,
0
,
0
,
a
[
8
],
0
,
0
,
a
[
19
],
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
2
],
b
[
20
],
0
,
b
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
0
,
c
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
c
[
17
],
0
,
0
,
0
,
0
};
M
[
89
]
=
{
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
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
0
,
a
[
18
],
0
,
0
,
0
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
17
],
0
,
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
b
[
2
],
0
,
b
[
19
],
0
,
b
[
18
],
b
[
17
],
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
c
[
17
],
0
,
c
[
18
],
0
,
c
[
2
],
c
[
6
],
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
};
M
[
90
]
=
{
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
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
12
],
b
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
c
[
19
],
0
,
0
,
0
,
c
[
2
],
c
[
8
],
0
,
c
[
17
],
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
0
};
M
[
91
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
a
[
3
],
a
[
2
],
0
,
0
,
a
[
5
],
a
[
17
],
0
,
0
,
0
,
0
,
a
[
14
],
a
[
8
],
0
,
a
[
4
],
a
[
20
],
a
[
13
],
0
,
0
,
0
,
0
,
a
[
19
],
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
b
[
3
],
b
[
13
],
b
[
2
],
b
[
5
],
0
,
b
[
19
],
b
[
17
],
b
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
4
],
0
,
0
,
0
,
0
,
b
[
14
],
b
[
8
],
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
c
[
19
],
0
,
c
[
8
],
0
,
0
,
c
[
4
],
0
,
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
c
[
20
],
0
,
c
[
3
],
c
[
2
],
c
[
5
],
c
[
17
],
0
,
0
,
0
};
M
[
92
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
17
],
a
[
5
],
0
,
a
[
14
],
a
[
8
],
a
[
4
],
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
5
],
b
[
6
],
0
,
0
,
b
[
12
],
0
,
b
[
17
],
b
[
8
],
0
,
0
,
b
[
4
],
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
c
[
16
],
0
,
0
,
c
[
14
],
0
,
0
,
0
,
c
[
3
],
c
[
4
],
0
,
0
,
0
,
c
[
5
],
0
,
c
[
15
],
c
[
18
],
0
,
c
[
17
],
c
[
8
],
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
};
M
[
93
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
18
],
a
[
15
],
0
,
a
[
5
],
a
[
17
],
a
[
3
],
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
15
],
b
[
7
],
0
,
0
,
b
[
6
],
0
,
b
[
18
],
b
[
17
],
0
,
0
,
b
[
3
],
b
[
4
],
b
[
5
],
b
[
8
],
b
[
14
],
0
,
0
,
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
],
c
[
14
],
0
,
0
,
c
[
12
],
0
,
0
,
c
[
5
],
0
,
0
,
0
,
0
,
c
[
3
],
0
,
c
[
4
],
0
,
c
[
15
],
0
,
0
,
0
,
c
[
8
],
c
[
18
],
c
[
17
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
};
M
[
94
]
=
{
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
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
a
[
19
],
0
,
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
0
,
b
[
19
],
0
,
0
,
0
,
b
[
17
],
0
,
0
,
0
,
c
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
c
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
};
M
[
95
]
=
{
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
,
u
[
4
],
a
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
a
[
17
],
0
,
a
[
8
],
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
b
[
6
],
b
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
0
,
b
[
8
],
0
,
0
,
0
,
b
[
12
],
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
c
[
12
],
0
,
c
[
8
],
0
,
0
,
0
,
c
[
2
],
c
[
19
],
0
,
0
,
0
,
c
[
17
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
0
,
0
};
M
[
96
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
a
[
5
],
a
[
17
],
0
,
0
,
0
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
a
[
14
],
a
[
19
],
a
[
4
],
0
,
0
,
0
,
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
5
],
b
[
4
],
b
[
17
],
0
,
0
,
b
[
8
],
b
[
12
],
b
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
c
[
16
],
0
,
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
c
[
4
],
0
,
c
[
3
],
c
[
2
],
0
,
c
[
19
],
0
,
c
[
5
],
c
[
17
],
0
,
c
[
12
],
0
,
0
,
0
};
M
[
97
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
a
[
12
],
0
,
a
[
17
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
17
],
b
[
8
],
b
[
12
],
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
c
[
18
],
c
[
17
],
0
,
c
[
8
],
0
,
c
[
6
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
98
]
=
{
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
,
a
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
8
],
a
[
14
],
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
14
],
b
[
12
],
0
,
0
,
b
[
16
],
0
,
b
[
8
],
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
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
4
],
0
,
0
,
0
,
c
[
3
],
c
[
14
],
0
,
c
[
5
],
c
[
17
],
0
,
c
[
8
],
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
};
M
[
99
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
7
],
0
,
a
[
6
],
0
,
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
b
[
18
],
b
[
17
],
b
[
6
],
0
,
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
12
],
0
,
0
,
0
,
0
,
0
,
c
[
6
],
0
,
0
,
0
,
0
,
c
[
18
],
c
[
8
],
c
[
17
],
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
100
]
=
{
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
0
,
c
[
14
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
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
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
9
],
a
[
13
],
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
0
,
a
[
3
],
0
,
0
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
b
[
13
],
b
[
20
],
b
[
3
],
b
[
11
],
b
[
2
],
0
,
0
,
c
[
11
],
c
[
3
],
c
[
2
],
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
c
[
20
],
0
,
c
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
102
]
=
{
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
,
0
,
0
,
a
[
13
],
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
3
],
0
,
a
[
2
],
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
,
b
[
13
],
b
[
20
],
0
,
b
[
2
],
b
[
3
],
0
,
0
,
0
,
c
[
3
],
c
[
2
],
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
c
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
103
]
=
{
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
,
0
,
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
2
],
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
,
b
[
20
],
0
,
0
,
0
,
b
[
2
],
0
,
0
,
0
,
c
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
104
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
0
,
0
,
0
,
a
[
14
],
a
[
8
],
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
4
],
0
,
0
,
b
[
8
],
0
,
0
,
b
[
10
],
0
,
b
[
14
],
0
,
0
,
0
,
0
,
0
,
b
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
c
[
16
],
c
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
c
[
9
],
0
,
0
,
0
,
0
,
c
[
10
],
0
,
0
,
c
[
14
],
0
,
0
};
M
[
105
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
4
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
a
[
4
],
0
,
0
,
0
,
a
[
14
],
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
19
],
0
,
a
[
16
],
0
,
b
[
10
],
0
,
b
[
4
],
0
,
b
[
8
],
0
,
b
[
14
],
0
,
0
,
0
,
b
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
c
[
16
],
0
,
c
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
9
],
c
[
13
],
0
,
0
,
0
,
c
[
10
],
c
[
4
],
0
,
c
[
14
],
c
[
8
],
0
,
0
};
M
[
106
]
=
{
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
,
a
[
4
],
a
[
19
],
0
,
0
,
a
[
14
],
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
b
[
4
],
0
,
b
[
19
],
b
[
14
],
0
,
0
,
b
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
13
],
c
[
20
],
0
,
0
,
0
,
c
[
4
],
c
[
19
],
c
[
14
],
c
[
8
],
0
,
0
,
0
};
M
[
107
]
=
{
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
,
a
[
19
],
0
,
0
,
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
0
,
0
,
b
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
16
],
0
,
0
,
0
,
c
[
16
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
c
[
19
],
0
,
c
[
8
],
0
,
0
,
0
,
0
};
M
[
108
]
=
{
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
,
0
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
a
[
9
],
0
,
0
,
a
[
13
],
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
,
b
[
9
],
b
[
1
],
b
[
13
],
0
,
b
[
20
],
c
[
1
],
c
[
9
],
c
[
13
],
c
[
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
};
M
[
109
]
=
{
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
,
u
[
3
],
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
6
],
0
,
a
[
18
],
0
,
a
[
17
],
0
,
a
[
2
],
0
,
0
,
0
,
0
,
0
,
a
[
12
],
0
,
0
,
b
[
7
],
b
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
2
],
b
[
19
],
b
[
17
],
0
,
b
[
8
],
0
,
b
[
6
],
b
[
12
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
8
],
0
,
c
[
12
],
0
,
c
[
6
],
0
,
c
[
17
],
0
,
0
,
0
,
0
,
c
[
2
],
0
,
c
[
19
],
0
,
c
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
0
,
0
,
0
,
0
,
0
,
0
};
M
[
110
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
5
],
0
,
0
,
0
,
a
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
a
[
11
],
0
,
0
,
0
,
a
[
6
],
0
,
0
,
0
,
0
,
b
[
7
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
11
],
0
,
0
,
0
,
b
[
1
],
0
,
b
[
10
],
0
,
b
[
15
],
0
,
0
,
0
,
b
[
5
],
b
[
6
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
7
],
c
[
15
],
0
,
0
,
0
,
c
[
1
],
0
,
0
,
c
[
5
],
0
,
0
,
c
[
10
],
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
c
[
6
]};
M
[
111
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
20
],
a
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
0
,
0
,
a
[
9
],
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
,
b
[
1
],
0
,
b
[
9
],
b
[
20
],
b
[
13
],
0
,
c
[
1
],
c
[
9
],
c
[
13
],
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
,
c
[
20
],
0
};
M
[
112
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
1
],
a
[
9
],
a
[
13
],
a
[
20
],
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
0
,
a
[
4
],
b
[
20
],
0
,
0
,
0
,
b
[
1
],
b
[
13
],
0
,
b
[
9
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
10
],
0
,
b
[
4
],
0
,
b
[
19
],
0
,
c
[
10
],
c
[
4
],
c
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
1
],
c
[
9
],
c
[
13
],
0
,
0
};
M
[
113
]
=
{
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
,
a
[
9
],
a
[
13
],
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
10
],
0
,
a
[
4
],
0
,
0
,
a
[
19
],
0
,
0
,
0
,
0
,
b
[
9
],
b
[
20
],
0
,
b
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
4
],
b
[
10
],
b
[
19
],
0
,
0
,
c
[
10
],
c
[
4
],
c
[
19
],
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
,
c
[
9
],
c
[
13
],
c
[
20
],
0
,
0
};
M
[
114
]
=
{
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
,
a
[
13
],
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
4
],
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
0
,
0
,
b
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
b
[
4
],
0
,
0
,
0
,
c
[
4
],
c
[
19
],
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
,
c
[
13
],
c
[
20
],
0
,
0
,
0
};
M
[
115
]
=
{
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
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
19
],
0
,
0
,
0
,
c
[
19
],
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
,
c
[
20
],
0
,
0
,
0
,
0
};
M
[
116
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
u
[
2
],
0
,
0
,
0
,
0
,
a
[
13
],
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
a
[
11
],
a
[
3
],
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
a
[
9
],
a
[
18
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
9
],
b
[
13
],
b
[
20
],
0
,
b
[
11
],
b
[
3
],
b
[
2
],
b
[
15
],
0
,
b
[
18
],
0
,
0
,
0
,
c
[
15
],
c
[
18
],
0
,
0
,
0
,
0
,
c
[
3
],
c
[
9
],
c
[
13
],
0
,
c
[
2
],
0
,
c
[
11
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
c
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
117
]
=
{
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
,
a
[
20
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
3
],
a
[
2
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
15
],
0
,
a
[
18
],
0
,
a
[
13
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
13
],
b
[
20
],
0
,
0
,
b
[
3
],
b
[
2
],
0
,
b
[
18
],
b
[
15
],
0
,
0
,
0
,
c
[
15
],
c
[
18
],
0
,
0
,
0
,
0
,
0
,
c
[
2
],
c
[
13
],
c
[
20
],
0
,
0
,
0
,
c
[
3
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
M
[
118
]
=
{
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
,
a
[
13
],
a
[
20
],
0
,
0
,
a
[
4
],
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
14
],
0
,
a
[
8
],
0
,
0
,
0
,
0
,
b
[
13
],
0
,
b
[
20
],
b
[
4
],
0
,
0
,
b
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
b
[
14
],
0
,
0
,
0
,
c
[
14
],
c
[
8
],
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
,
c
[
13
],
c
[
20
],
c
[
4
],
c
[
19
],
0
,
0
,
0
};
M
[
119
]
=
{
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
,
a
[
20
],
0
,
0
,
0
,
a
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
a
[
8
],
0
,
0
,
0
,
0
,
0
,
0
,
b
[
20
],
0
,
0
,
b
[
19
],
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
b
[
8
],
0
,
0
,
0
,
c
[
8
],
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
,
c
[
20
],
0
,
c
[
19
],
0
,
0
,
0
,
0
};
return
cv
::
Mat
(
M
).
t
();
}
modules/calib3d/src/dls.h
View file @
42ab7fd8
#ifndef
dls_h
#define
dls_h
#ifndef
DLS_H
#define
DLS_H
#include "
opencv2/core/core_c.h
"
#include "
precomp.hpp
"
class
dls
{
public
:
dls
();
dls
(
const
cv
::
Mat
&
opoints
,
const
cv
::
Mat
&
ipoints
);
~
dls
();
private
:
void
init_vectors
(
const
cv
::
Mat
&
opoints
,
const
cv
::
Mat
&
ipoints
);
void
build_coeff_mattrix
();
cv
::
Mat
LeftMultVec
(
const
cv
::
Mat
&
v
);
cv
::
Mat
cayley_LS_M
(
const
std
::
vector
<
double
>&
a
,
const
std
::
vector
<
double
>&
b
,
const
std
::
vector
<
double
>&
c
,
const
std
::
vector
<
double
>&
u
);
private
:
cv
::
Mat
H
;
// coeff matrix
cv
::
Mat
A
;
cv
::
Mat
D_mat
;
std
::
vector
<
double
>
f1coeff
;
std
::
vector
<
double
>
f2coeff
;
std
::
vector
<
double
>
f3coeff
;
cv
::
Mat
p
;
// object points
cv
::
Mat
z
;
// image points
int
N
;
// number of input points
};
#endif
#endif
// DLS_H
modules/calib3d/src/solvepnp.cpp
View file @
42ab7fd8
...
...
@@ -41,10 +41,10 @@
//M*/
#include "precomp.hpp"
#include "dls.h"
#include "epnp.h"
#include "p3p.h"
#include "opencv2/calib3d/calib3d_c.h"
#include "dls.h"
#include <iostream>
using
namespace
cv
;
...
...
@@ -100,12 +100,13 @@ bool cv::solvePnP( InputArray _opoints, InputArray _ipoints,
cv
::
Mat
undistortedPoints
;
cv
::
undistortPoints
(
ipoints
,
undistortedPoints
,
cameraMatrix
,
distCoeffs
);
//dls PnP;
dls
PnP
(
opoints
,
undistortedPoints
);
// DO SOMETHING
cv
::
Mat
R
,
rvec
=
_rvec
.
getMat
(),
tvec
=
_tvec
.
getMat
();
return
true
;
}
else
CV_Error
(
CV_StsBadArg
,
"The flags argument must be one of CV_ITERATIVE, CV_P3P or CV_EPNP"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment