diff --git a/basis/images/pgm/authors.txt b/basis/images/pgm/authors.txt new file mode 100644 index 0000000000..6f03a12101 --- /dev/null +++ b/basis/images/pgm/authors.txt @@ -0,0 +1 @@ +Erik Charlebois diff --git a/basis/images/pgm/pgm-tests.factor b/basis/images/pgm/pgm-tests.factor new file mode 100644 index 0000000000..7bfade4717 --- /dev/null +++ b/basis/images/pgm/pgm-tests.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: images.testing ; +IN: images.pgm.tests + +"vocab:images/testing/pgm/radial.binary.pgm" decode-test +"vocab:images/testing/pgm/radial.ascii.pgm" decode-test diff --git a/basis/images/pgm/pgm.factor b/basis/images/pgm/pgm.factor new file mode 100644 index 0000000000..e673565fc9 --- /dev/null +++ b/basis/images/pgm/pgm.factor @@ -0,0 +1,63 @@ +! Copyright (C) 2010 Erik Charlebois. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors alien.c-types ascii combinators images images.loader +io io.encodings.ascii io.encodings.string kernel locals make math +math.parser sequences specialized-arrays ; +SPECIALIZED-ARRAY: ushort +IN: images.pgm + +SINGLETON: pgm-image +"pgm" pgm-image register-image-class + +: read-token ( -- token ) + [ read1 dup blank? + [ t ] + [ dup CHAR: # = + [ "\n" read-until 2drop t ] + [ f ] if + ] if + ] [ drop ] while + " \n\r\t" read-until drop swap + prefix ascii decode ; + +: read-number ( -- number ) + read-token string>number ; + +:: read-numbers ( n lim -- ) + n lim = [ + read-number , + n 1 + lim read-numbers + ] unless ; + +ERROR: INSPECT a ; +:: read-pgm ( -- image ) + read-token :> type + read-number :> width + read-number :> height + read-number :> max + width height * :> npixels + max 256 >= :> wide + + type { + { "P2" [ [ 0 npixels read-numbers ] wide [ ushort-array{ } ] [ B{ } ] if make ] } + { "P5" [ wide [ 2 ] [ 1 ] if npixels * read ] } + } case :> data + + image new + L >>component-order + { width height } >>dim + f >>upside-down? + data >>bitmap + wide [ ushort-components ] [ ubyte-components ] if >>component-type ; + +M: pgm-image stream>image + drop [ read-pgm ] with-input-stream ; + +M: pgm-image image>stream + drop { + [ drop "P5\n" ascii encode write ] + [ dim>> first number>string " " append ascii encode write ] + [ dim>> second number>string "\n" append ascii encode write ] + [ component-type>> ubyte-components = [ "255\n" ] [ "65535\n" ] if ascii encode write ] + [ bitmap>> write ] + } cleave ; diff --git a/basis/images/pgm/summary.txt b/basis/images/pgm/summary.txt new file mode 100644 index 0000000000..f558b7cbb5 --- /dev/null +++ b/basis/images/pgm/summary.txt @@ -0,0 +1 @@ +Image loading for PGM image files. diff --git a/extra/images/testing/pgm/radial.ascii.fig b/extra/images/testing/pgm/radial.ascii.fig new file mode 100644 index 0000000000..6e52311b94 Binary files /dev/null and b/extra/images/testing/pgm/radial.ascii.fig differ diff --git a/extra/images/testing/pgm/radial.ascii.pgm b/extra/images/testing/pgm/radial.ascii.pgm new file mode 100644 index 0000000000..1a7a6a832d --- /dev/null +++ b/extra/images/testing/pgm/radial.ascii.pgm @@ -0,0 +1,16388 @@ +P2 +# CREATOR: GIMP PNM Filter Version 1.1 +128 128 +255 +0 +2 +4 +6 +8 +10 +12 +13 +16 +17 +19 +21 +22 +24 +26 +28 +30 +32 +33 +35 +36 +38 +40 +41 +42 +44 +45 +46 +48 +49 +51 +52 +54 +55 +56 +57 +58 +59 +60 +61 +63 +63 +65 +65 +66 +67 +67 +68 +69 +70 +71 +71 +72 +72 +72 +73 +74 +74 +74 +74 +74 +74 +75 +74 +75 +75 +74 +75 +74 +74 +74 +74 +73 +73 +73 +72 +72 +71 +70 +69 +69 +69 +67 +66 +66 +65 +64 +63 +62 +61 +60 +59 +58 +57 +56 +55 +54 +52 +51 +49 +48 +46 +45 +43 +42 +41 +39 +38 +36 +34 +33 +31 +29 +27 +26 +25 +23 +21 +19 +18 +16 +14 +12 +10 +8 +6 +4 +2 +2 +4 +6 +8 +10 +12 +13 +16 +18 +20 +21 +23 +24 +27 +29 +31 +32 +34 +35 +37 +38 +40 +41 +43 +45 +46 +48 +49 +50 +52 +54 +55 +56 +57 +59 +60 +61 +61 +63 +64 +66 +66 +67 +68 +69 +69 +70 +71 +72 +73 +73 +74 +74 +75 +76 +76 +76 +77 +76 +77 +77 +78 +77 +77 +77 +77 +77 +77 +78 +77 +77 +77 +76 +76 +75 +75 +74 +74 +74 +73 +72 +71 +71 +70 +68 +68 +67 +67 +65 +64 +63 +62 +60 +59 +59 +57 +56 +54 +54 +52 +51 +49 +47 +46 +45 +43 +41 +41 +38 +37 +35 +34 +32 +30 +29 +27 +25 +23 +21 +19 +18 +15 +14 +12 +10 +8 +6 +4 +4 +6 +8 +10 +12 +14 +16 +18 +20 +21 +23 +25 +27 +28 +30 +32 +34 +36 +37 +39 +40 +43 +44 +46 +47 +49 +50 +51 +53 +54 +56 +58 +58 +60 +60 +62 +63 +65 +66 +67 +68 +68 +70 +71 +72 +73 +73 +74 +74 +75 +76 +76 +78 +77 +78 +78 +79 +80 +79 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +79 +79 +78 +78 +78 +78 +77 +77 +76 +75 +75 +74 +73 +72 +71 +70 +70 +69 +67 +67 +65 +64 +63 +62 +61 +60 +59 +57 +56 +54 +53 +52 +51 +49 +47 +46 +44 +42 +41 +39 +38 +35 +34 +32 +31 +29 +27 +25 +23 +22 +19 +18 +16 +14 +12 +10 +8 +6 +6 +8 +10 +12 +14 +16 +18 +19 +22 +23 +26 +27 +29 +31 +33 +35 +37 +38 +39 +41 +43 +45 +47 +48 +49 +51 +53 +54 +56 +57 +58 +60 +61 +63 +64 +65 +66 +67 +69 +69 +70 +71 +72 +73 +74 +75 +76 +77 +77 +78 +79 +79 +80 +80 +81 +81 +81 +82 +82 +83 +82 +83 +83 +83 +83 +83 +83 +83 +83 +83 +82 +82 +82 +82 +80 +80 +80 +79 +79 +78 +77 +76 +75 +75 +74 +73 +73 +72 +71 +69 +68 +67 +66 +65 +64 +62 +61 +59 +59 +57 +55 +54 +52 +51 +50 +48 +47 +45 +43 +42 +40 +38 +36 +35 +33 +31 +29 +27 +25 +24 +22 +20 +18 +16 +14 +12 +10 +7 +8 +9 +12 +14 +16 +18 +19 +22 +24 +25 +27 +30 +31 +34 +35 +37 +38 +41 +42 +44 +45 +47 +49 +50 +52 +53 +55 +56 +58 +59 +61 +62 +63 +65 +66 +67 +69 +70 +71 +72 +73 +73 +75 +76 +77 +77 +78 +80 +80 +81 +81 +82 +82 +84 +83 +84 +84 +84 +85 +86 +85 +86 +86 +86 +86 +85 +86 +86 +86 +86 +85 +85 +84 +84 +84 +83 +83 +82 +81 +80 +80 +80 +78 +78 +77 +76 +75 +74 +73 +72 +71 +69 +68 +68 +66 +65 +64 +62 +61 +59 +58 +57 +55 +53 +52 +50 +49 +47 +46 +44 +42 +40 +39 +36 +35 +33 +31 +29 +28 +26 +23 +22 +20 +18 +16 +14 +12 +10 +10 +12 +14 +16 +18 +20 +22 +23 +26 +28 +30 +31 +33 +36 +37 +38 +41 +42 +45 +45 +48 +50 +51 +53 +55 +56 +58 +59 +60 +62 +63 +64 +66 +68 +69 +69 +71 +73 +74 +74 +76 +77 +77 +78 +79 +80 +82 +82 +82 +84 +85 +85 +85 +86 +86 +87 +87 +88 +88 +89 +88 +88 +89 +88 +89 +89 +88 +89 +88 +88 +88 +88 +87 +87 +86 +86 +86 +85 +85 +84 +82 +82 +82 +81 +80 +79 +78 +77 +75 +74 +73 +72 +71 +70 +68 +67 +66 +64 +64 +62 +60 +59 +57 +56 +54 +53 +51 +49 +48 +46 +44 +42 +40 +39 +37 +35 +34 +31 +30 +28 +26 +24 +21 +20 +18 +16 +14 +12 +12 +14 +16 +18 +20 +22 +24 +26 +28 +30 +32 +34 +36 +38 +39 +41 +43 +45 +47 +48 +50 +52 +53 +55 +57 +58 +59 +61 +63 +64 +65 +67 +69 +70 +71 +73 +74 +74 +76 +77 +78 +79 +80 +81 +83 +83 +84 +85 +85 +86 +87 +87 +89 +89 +90 +89 +90 +90 +91 +91 +91 +92 +92 +92 +92 +92 +91 +92 +92 +91 +91 +91 +90 +89 +89 +89 +88 +87 +87 +86 +86 +85 +84 +83 +82 +81 +80 +79 +78 +77 +76 +75 +74 +72 +71 +69 +68 +67 +66 +64 +63 +61 +59 +58 +56 +55 +53 +52 +50 +49 +46 +45 +43 +41 +39 +37 +36 +33 +32 +30 +28 +26 +24 +22 +20 +18 +15 +14 +14 +15 +18 +20 +22 +24 +26 +28 +30 +31 +33 +36 +37 +40 +42 +43 +45 +47 +48 +50 +52 +54 +56 +57 +59 +61 +62 +64 +65 +67 +68 +70 +71 +72 +74 +75 +76 +77 +78 +80 +81 +82 +83 +84 +85 +86 +87 +87 +88 +89 +89 +90 +90 +91 +92 +92 +93 +93 +94 +94 +94 +95 +94 +94 +94 +94 +94 +94 +94 +94 +94 +94 +93 +92 +92 +92 +90 +91 +90 +89 +88 +87 +86 +86 +85 +84 +83 +82 +81 +80 +78 +77 +76 +75 +73 +72 +70 +69 +68 +67 +65 +63 +62 +61 +59 +57 +56 +54 +52 +50 +49 +47 +45 +43 +41 +40 +38 +35 +34 +32 +30 +28 +26 +24 +22 +20 +17 +16 +15 +17 +20 +22 +24 +26 +28 +30 +32 +34 +35 +38 +40 +41 +44 +45 +48 +49 +51 +53 +54 +56 +58 +60 +62 +63 +65 +66 +68 +69 +70 +72 +73 +74 +76 +77 +79 +80 +81 +82 +84 +84 +85 +87 +87 +89 +89 +90 +91 +91 +92 +93 +94 +94 +94 +95 +96 +96 +96 +97 +97 +97 +97 +97 +98 +98 +98 +97 +97 +96 +96 +96 +95 +95 +95 +95 +94 +93 +92 +92 +91 +90 +89 +88 +88 +87 +86 +84 +83 +82 +81 +80 +79 +77 +76 +74 +73 +72 +71 +69 +68 +66 +64 +63 +61 +59 +58 +57 +54 +53 +51 +49 +48 +45 +43 +42 +39 +37 +35 +34 +31 +30 +28 +26 +24 +21 +20 +18 +17 +20 +22 +23 +26 +28 +30 +31 +34 +36 +38 +40 +42 +44 +46 +48 +49 +51 +53 +55 +57 +59 +60 +62 +63 +65 +66 +68 +70 +72 +73 +74 +76 +78 +78 +79 +81 +83 +83 +84 +86 +87 +89 +89 +90 +91 +92 +92 +94 +95 +95 +96 +96 +97 +98 +98 +99 +98 +99 +100 +100 +99 +100 +100 +100 +100 +100 +100 +100 +99 +99 +98 +99 +98 +98 +97 +96 +96 +95 +95 +93 +93 +92 +91 +90 +89 +89 +87 +86 +85 +84 +83 +81 +79 +78 +77 +75 +74 +73 +71 +70 +69 +67 +65 +64 +62 +60 +59 +57 +55 +53 +51 +49 +47 +46 +44 +41 +40 +38 +36 +34 +32 +30 +27 +26 +24 +21 +19 +19 +21 +24 +26 +28 +30 +32 +34 +35 +38 +40 +41 +44 +45 +48 +50 +52 +54 +56 +56 +59 +61 +62 +64 +66 +67 +69 +71 +73 +74 +76 +77 +78 +79 +81 +83 +84 +85 +86 +87 +89 +90 +91 +92 +93 +93 +95 +96 +97 +97 +97 +98 +99 +100 +100 +100 +101 +101 +102 +103 +102 +102 +103 +103 +102 +103 +102 +102 +103 +102 +102 +102 +101 +100 +100 +99 +99 +98 +98 +98 +97 +96 +95 +94 +92 +91 +91 +89 +89 +88 +87 +85 +84 +83 +81 +79 +78 +77 +75 +74 +73 +71 +69 +68 +66 +64 +62 +61 +59 +57 +55 +54 +51 +49 +48 +46 +43 +42 +40 +38 +36 +33 +32 +29 +27 +26 +23 +21 +21 +23 +25 +27 +30 +32 +33 +35 +38 +40 +42 +44 +45 +48 +50 +52 +53 +55 +57 +59 +61 +63 +64 +67 +68 +69 +71 +73 +75 +76 +77 +79 +81 +82 +83 +85 +87 +88 +89 +90 +91 +92 +93 +95 +95 +96 +97 +98 +99 +99 +101 +101 +102 +102 +103 +104 +104 +105 +105 +105 +105 +105 +106 +106 +106 +106 +106 +106 +105 +105 +105 +104 +104 +103 +103 +103 +102 +101 +101 +100 +99 +98 +97 +96 +96 +95 +93 +93 +91 +90 +88 +87 +86 +85 +83 +82 +81 +79 +77 +76 +74 +73 +71 +69 +68 +66 +65 +63 +61 +59 +57 +56 +54 +51 +50 +48 +46 +43 +42 +40 +38 +35 +34 +32 +30 +27 +25 +23 +22 +25 +27 +29 +32 +34 +35 +38 +40 +42 +44 +45 +48 +50 +52 +53 +56 +57 +60 +61 +64 +65 +67 +69 +70 +72 +74 +76 +77 +79 +80 +81 +83 +84 +86 +87 +88 +90 +91 +92 +94 +95 +96 +97 +98 +99 +100 +101 +102 +102 +103 +104 +105 +105 +106 +106 +107 +108 +108 +108 +108 +108 +108 +108 +109 +109 +108 +108 +108 +108 +107 +107 +106 +106 +106 +105 +104 +104 +103 +103 +102 +101 +100 +99 +98 +97 +96 +95 +94 +92 +91 +90 +89 +87 +86 +84 +83 +82 +80 +79 +76 +75 +74 +71 +70 +69 +67 +65 +63 +61 +59 +57 +56 +54 +51 +49 +48 +46 +44 +42 +40 +38 +35 +34 +31 +29 +27 +25 +24 +26 +29 +31 +33 +35 +37 +39 +42 +44 +46 +48 +49 +51 +54 +56 +57 +60 +61 +63 +65 +67 +69 +71 +73 +74 +76 +77 +79 +81 +82 +84 +85 +87 +89 +90 +91 +92 +94 +95 +96 +97 +99 +99 +100 +102 +103 +104 +104 +106 +106 +107 +108 +108 +109 +109 +110 +110 +110 +111 +111 +111 +111 +111 +111 +112 +111 +111 +111 +111 +111 +110 +110 +109 +109 +108 +108 +107 +106 +105 +105 +103 +102 +101 +100 +99 +99 +97 +96 +95 +94 +92 +91 +90 +88 +87 +86 +84 +82 +80 +79 +77 +75 +74 +72 +71 +69 +67 +65 +63 +61 +60 +58 +56 +54 +52 +50 +48 +46 +44 +42 +39 +37 +35 +34 +31 +28 +27 +26 +28 +31 +33 +35 +37 +39 +41 +44 +45 +47 +50 +52 +54 +56 +58 +59 +62 +64 +66 +67 +69 +71 +73 +75 +76 +78 +80 +82 +83 +85 +86 +88 +90 +91 +92 +94 +95 +97 +97 +98 +100 +101 +103 +103 +104 +105 +106 +107 +108 +109 +109 +110 +111 +111 +112 +112 +113 +113 +114 +114 +114 +114 +114 +115 +114 +114 +114 +113 +113 +113 +113 +112 +111 +111 +110 +110 +109 +108 +108 +107 +106 +106 +104 +103 +102 +102 +99 +99 +97 +97 +95 +94 +92 +91 +89 +87 +87 +84 +83 +81 +80 +78 +77 +75 +73 +71 +69 +67 +66 +63 +62 +60 +58 +56 +54 +51 +50 +48 +46 +44 +42 +39 +37 +35 +33 +31 +28 +28 +31 +32 +35 +36 +39 +41 +43 +46 +47 +49 +52 +54 +56 +57 +60 +62 +63 +65 +68 +69 +71 +73 +75 +77 +79 +80 +82 +84 +85 +87 +88 +90 +91 +93 +95 +96 +97 +99 +100 +101 +102 +104 +105 +106 +107 +108 +109 +109 +111 +111 +113 +113 +113 +114 +114 +115 +116 +116 +116 +117 +117 +117 +117 +117 +117 +117 +117 +117 +117 +116 +115 +115 +115 +115 +113 +113 +112 +111 +111 +110 +109 +108 +107 +106 +104 +103 +102 +102 +100 +98 +97 +96 +95 +93 +92 +90 +89 +87 +85 +84 +82 +80 +79 +77 +75 +73 +72 +69 +67 +66 +64 +61 +60 +57 +56 +53 +52 +49 +48 +46 +43 +41 +38 +37 +35 +33 +30 +30 +31 +34 +36 +39 +40 +42 +45 +47 +49 +52 +54 +56 +57 +60 +62 +64 +65 +68 +69 +71 +74 +76 +77 +79 +81 +83 +84 +86 +87 +89 +90 +93 +94 +96 +97 +99 +100 +101 +103 +104 +106 +106 +108 +109 +110 +111 +112 +112 +114 +114 +115 +115 +117 +117 +117 +117 +119 +118 +119 +119 +119 +120 +119 +120 +119 +120 +120 +119 +119 +119 +119 +118 +118 +117 +116 +116 +115 +114 +114 +113 +111 +111 +110 +109 +108 +106 +105 +104 +103 +101 +100 +99 +97 +96 +94 +92 +91 +89 +87 +86 +84 +83 +80 +79 +77 +76 +73 +71 +70 +67 +65 +64 +62 +59 +57 +55 +54 +51 +49 +47 +45 +43 +41 +38 +37 +34 +31 +32 +34 +35 +38 +40 +43 +45 +46 +49 +52 +53 +55 +57 +59 +62 +64 +66 +68 +70 +72 +73 +75 +77 +79 +81 +83 +85 +86 +88 +90 +91 +93 +95 +97 +98 +99 +101 +102 +103 +105 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +117 +119 +119 +120 +121 +120 +121 +121 +122 +122 +122 +122 +123 +123 +122 +123 +122 +122 +122 +121 +121 +120 +121 +120 +119 +118 +117 +117 +116 +115 +114 +113 +112 +111 +110 +108 +107 +106 +105 +104 +102 +100 +99 +98 +96 +95 +93 +91 +90 +88 +86 +84 +83 +81 +79 +77 +75 +74 +71 +70 +68 +66 +63 +62 +59 +57 +55 +53 +51 +49 +47 +45 +42 +40 +38 +36 +33 +33 +35 +37 +40 +42 +44 +47 +49 +51 +53 +56 +57 +59 +61 +63 +66 +68 +70 +72 +74 +76 +78 +80 +82 +83 +86 +87 +88 +90 +93 +94 +95 +97 +99 +101 +102 +103 +105 +106 +107 +108 +110 +111 +113 +113 +115 +116 +116 +118 +118 +120 +120 +121 +121 +122 +123 +124 +124 +125 +124 +125 +126 +126 +125 +125 +125 +125 +126 +125 +125 +124 +124 +124 +123 +122 +122 +121 +121 +119 +118 +117 +116 +116 +115 +113 +112 +111 +110 +109 +107 +106 +105 +103 +102 +100 +98 +97 +96 +93 +92 +90 +89 +87 +85 +83 +81 +79 +78 +76 +74 +71 +70 +68 +65 +64 +62 +59 +58 +56 +53 +51 +48 +46 +44 +42 +39 +38 +35 +35 +36 +39 +42 +43 +46 +48 +50 +53 +54 +57 +59 +61 +64 +65 +68 +69 +72 +74 +75 +78 +80 +81 +83 +86 +87 +89 +91 +93 +94 +96 +98 +99 +101 +102 +104 +105 +107 +109 +110 +111 +113 +114 +116 +116 +117 +119 +120 +121 +121 +122 +123 +124 +124 +126 +126 +126 +127 +127 +128 +128 +128 +128 +128 +128 +128 +128 +128 +128 +127 +127 +127 +127 +126 +125 +125 +124 +123 +123 +121 +121 +120 +118 +118 +116 +115 +114 +112 +111 +110 +108 +107 +105 +104 +102 +101 +99 +98 +96 +94 +93 +91 +89 +87 +85 +84 +82 +80 +78 +75 +74 +71 +70 +68 +65 +63 +61 +59 +57 +55 +52 +50 +49 +46 +44 +41 +39 +37 +37 +39 +40 +43 +46 +48 +49 +52 +54 +57 +59 +61 +63 +66 +68 +70 +72 +73 +76 +77 +80 +82 +84 +86 +88 +90 +92 +94 +95 +97 +98 +100 +101 +103 +105 +107 +108 +110 +111 +112 +113 +115 +116 +118 +118 +120 +121 +122 +123 +124 +124 +126 +127 +127 +128 +128 +129 +129 +129 +130 +131 +131 +131 +131 +131 +131 +131 +131 +130 +130 +130 +129 +129 +129 +128 +127 +126 +126 +125 +124 +123 +122 +121 +120 +119 +118 +116 +115 +114 +113 +111 +110 +108 +107 +104 +103 +102 +100 +98 +96 +95 +93 +91 +90 +87 +85 +84 +82 +79 +78 +75 +74 +72 +69 +67 +65 +63 +60 +59 +56 +55 +52 +49 +47 +46 +43 +41 +38 +37 +40 +42 +44 +47 +49 +52 +54 +56 +58 +61 +62 +65 +67 +69 +72 +73 +75 +77 +80 +82 +83 +86 +88 +89 +92 +93 +95 +97 +99 +101 +102 +104 +106 +108 +108 +110 +112 +114 +115 +116 +118 +119 +120 +121 +122 +124 +125 +126 +127 +128 +128 +130 +130 +130 +131 +132 +132 +133 +133 +133 +133 +134 +134 +134 +134 +133 +134 +133 +133 +132 +133 +132 +131 +131 +130 +129 +128 +127 +126 +126 +125 +124 +123 +121 +120 +119 +118 +117 +115 +114 +112 +111 +109 +107 +105 +104 +103 +101 +99 +97 +95 +94 +91 +90 +87 +86 +83 +82 +80 +78 +76 +73 +71 +69 +67 +65 +62 +61 +59 +56 +53 +52 +49 +47 +45 +43 +40 +39 +41 +44 +46 +48 +51 +54 +56 +58 +60 +63 +64 +66 +69 +71 +73 +76 +78 +80 +81 +84 +86 +88 +89 +92 +93 +95 +97 +100 +100 +103 +104 +106 +108 +110 +112 +113 +114 +116 +118 +119 +120 +122 +123 +124 +126 +126 +128 +128 +129 +130 +131 +132 +133 +134 +134 +134 +135 +136 +136 +136 +137 +137 +137 +137 +137 +137 +136 +136 +136 +136 +135 +134 +134 +133 +133 +131 +132 +130 +130 +128 +127 +126 +125 +124 +123 +121 +121 +118 +117 +116 +114 +112 +111 +110 +108 +107 +105 +102 +101 +100 +98 +95 +94 +91 +90 +88 +86 +83 +82 +79 +78 +76 +73 +71 +69 +67 +65 +62 +60 +58 +55 +54 +51 +49 +47 +44 +42 +41 +44 +46 +47 +50 +53 +55 +57 +60 +61 +64 +66 +68 +71 +72 +75 +77 +79 +82 +84 +85 +88 +90 +91 +93 +95 +98 +99 +101 +103 +105 +107 +108 +110 +112 +113 +115 +117 +118 +120 +121 +122 +124 +126 +126 +128 +129 +130 +131 +132 +133 +134 +135 +135 +136 +137 +138 +138 +139 +138 +139 +139 +140 +139 +139 +140 +139 +139 +139 +139 +138 +137 +138 +136 +136 +135 +135 +134 +133 +132 +131 +130 +129 +128 +127 +126 +124 +122 +121 +119 +119 +117 +115 +113 +112 +111 +109 +107 +105 +103 +101 +99 +98 +96 +94 +92 +90 +87 +86 +84 +82 +79 +78 +75 +73 +71 +68 +66 +64 +61 +60 +58 +55 +53 +50 +48 +46 +43 +42 +44 +47 +50 +52 +54 +56 +58 +61 +64 +66 +68 +70 +72 +74 +77 +79 +81 +83 +85 +87 +90 +92 +93 +95 +98 +99 +101 +103 +105 +107 +109 +111 +112 +115 +116 +117 +119 +120 +123 +123 +125 +126 +128 +129 +130 +132 +132 +134 +135 +136 +137 +137 +138 +139 +140 +140 +141 +141 +141 +141 +142 +143 +142 +143 +142 +142 +142 +142 +142 +141 +141 +141 +140 +139 +138 +137 +137 +135 +134 +134 +132 +132 +130 +129 +128 +126 +125 +124 +122 +121 +119 +118 +115 +115 +112 +110 +109 +107 +106 +104 +101 +100 +98 +96 +93 +92 +90 +88 +85 +83 +81 +79 +77 +74 +72 +70 +67 +66 +63 +61 +59 +56 +54 +52 +49 +47 +45 +44 +46 +49 +51 +54 +56 +58 +61 +62 +65 +67 +70 +72 +74 +76 +78 +81 +83 +85 +87 +89 +92 +93 +96 +98 +100 +102 +104 +106 +107 +110 +111 +113 +115 +117 +118 +120 +121 +123 +125 +126 +127 +129 +130 +132 +132 +134 +136 +136 +137 +139 +139 +140 +141 +142 +142 +143 +143 +144 +144 +145 +145 +145 +145 +145 +145 +145 +144 +145 +145 +144 +143 +143 +142 +142 +141 +140 +139 +138 +138 +136 +135 +134 +133 +132 +130 +129 +128 +126 +124 +123 +121 +120 +118 +116 +114 +113 +111 +109 +107 +106 +104 +102 +100 +98 +95 +94 +91 +90 +87 +86 +83 +81 +79 +76 +74 +72 +70 +68 +65 +63 +61 +58 +55 +54 +51 +48 +46 +45 +48 +50 +52 +55 +58 +60 +62 +64 +67 +69 +71 +74 +76 +78 +80 +83 +84 +86 +90 +91 +93 +95 +97 +99 +101 +103 +105 +108 +109 +111 +113 +115 +117 +118 +120 +122 +124 +126 +127 +128 +130 +132 +132 +134 +136 +136 +138 +139 +140 +141 +141 +143 +144 +144 +145 +146 +146 +147 +147 +148 +148 +148 +148 +148 +148 +147 +148 +147 +147 +146 +147 +145 +145 +144 +143 +143 +142 +141 +140 +138 +138 +137 +135 +135 +133 +131 +130 +128 +127 +125 +124 +122 +120 +119 +117 +115 +114 +111 +109 +108 +106 +103 +102 +99 +97 +95 +93 +92 +89 +87 +85 +83 +81 +78 +76 +74 +71 +69 +66 +65 +62 +60 +57 +55 +52 +50 +48 +47 +50 +52 +54 +57 +58 +61 +64 +66 +68 +71 +72 +75 +77 +80 +82 +85 +86 +89 +91 +93 +95 +98 +100 +102 +104 +105 +108 +110 +111 +114 +115 +117 +119 +121 +122 +125 +126 +127 +129 +131 +133 +134 +136 +137 +138 +140 +140 +142 +143 +144 +144 +145 +146 +147 +148 +148 +149 +150 +150 +150 +151 +150 +151 +151 +151 +150 +150 +151 +149 +149 +149 +148 +148 +147 +146 +145 +145 +144 +142 +141 +140 +139 +138 +137 +135 +133 +132 +131 +129 +127 +126 +125 +123 +121 +119 +117 +116 +113 +111 +109 +107 +105 +104 +101 +99 +98 +95 +94 +91 +89 +87 +84 +82 +79 +78 +75 +73 +71 +68 +65 +64 +61 +59 +56 +54 +52 +49 +48 +50 +53 +56 +58 +60 +62 +65 +67 +69 +72 +75 +77 +79 +81 +83 +86 +88 +90 +93 +95 +97 +99 +102 +104 +105 +108 +110 +111 +113 +116 +117 +119 +121 +123 +124 +127 +128 +129 +131 +133 +134 +136 +137 +139 +140 +142 +143 +144 +146 +146 +147 +148 +149 +150 +151 +151 +152 +152 +153 +153 +153 +154 +154 +153 +154 +153 +153 +153 +152 +152 +152 +151 +151 +150 +149 +149 +148 +146 +145 +144 +143 +142 +140 +139 +138 +137 +135 +134 +132 +130 +128 +126 +125 +123 +122 +119 +117 +115 +113 +111 +110 +108 +106 +104 +101 +99 +97 +95 +93 +90 +88 +86 +83 +81 +79 +76 +75 +72 +70 +67 +65 +62 +60 +58 +56 +53 +50 +49 +52 +55 +57 +59 +61 +64 +66 +69 +71 +74 +76 +78 +81 +83 +85 +88 +90 +93 +95 +96 +98 +101 +103 +105 +107 +109 +111 +114 +115 +118 +119 +121 +123 +125 +127 +129 +130 +132 +134 +136 +137 +139 +140 +141 +143 +144 +145 +147 +148 +149 +150 +151 +151 +152 +153 +154 +154 +155 +156 +156 +156 +157 +156 +157 +156 +156 +156 +155 +155 +155 +155 +154 +153 +153 +152 +151 +150 +149 +147 +147 +145 +144 +143 +141 +140 +138 +137 +136 +134 +132 +130 +128 +127 +125 +124 +122 +120 +118 +116 +113 +112 +110 +107 +105 +103 +101 +99 +97 +94 +92 +90 +88 +86 +83 +81 +78 +76 +73 +72 +69 +67 +65 +62 +59 +57 +55 +51 +51 +53 +55 +58 +60 +63 +66 +68 +71 +73 +75 +77 +80 +82 +85 +87 +89 +91 +93 +96 +98 +101 +103 +105 +108 +110 +111 +114 +115 +118 +120 +122 +123 +125 +127 +129 +131 +132 +134 +136 +137 +139 +141 +142 +144 +145 +147 +148 +149 +150 +151 +153 +154 +154 +155 +156 +157 +157 +158 +158 +158 +159 +159 +159 +159 +160 +159 +159 +158 +158 +158 +157 +157 +155 +155 +155 +153 +152 +151 +150 +149 +147 +147 +146 +144 +142 +141 +140 +138 +136 +134 +133 +131 +129 +127 +126 +123 +121 +119 +118 +115 +113 +112 +109 +107 +105 +103 +101 +98 +96 +94 +91 +89 +87 +84 +82 +80 +78 +76 +73 +71 +68 +66 +63 +61 +58 +55 +54 +52 +55 +57 +60 +63 +65 +67 +69 +72 +74 +77 +79 +81 +84 +86 +89 +91 +93 +95 +98 +100 +102 +104 +106 +109 +111 +113 +115 +118 +120 +122 +123 +126 +128 +130 +131 +133 +135 +136 +138 +140 +142 +143 +144 +146 +148 +149 +150 +151 +152 +154 +155 +156 +157 +158 +159 +159 +160 +161 +161 +162 +162 +162 +162 +162 +162 +162 +162 +161 +161 +161 +160 +159 +159 +158 +157 +157 +155 +154 +153 +151 +151 +150 +148 +146 +145 +143 +142 +140 +138 +137 +135 +133 +131 +129 +127 +126 +123 +121 +119 +118 +115 +114 +111 +108 +107 +104 +102 +100 +98 +95 +94 +91 +89 +86 +84 +82 +79 +77 +74 +72 +70 +67 +64 +62 +60 +57 +54 +54 +56 +58 +61 +64 +66 +69 +71 +74 +76 +78 +80 +83 +86 +88 +90 +93 +95 +97 +100 +102 +104 +106 +109 +111 +113 +115 +117 +119 +121 +123 +125 +127 +130 +132 +133 +135 +137 +138 +140 +142 +144 +146 +147 +149 +150 +152 +153 +154 +155 +156 +158 +159 +159 +161 +161 +162 +162 +163 +164 +164 +164 +164 +165 +165 +165 +165 +165 +164 +164 +163 +163 +162 +161 +160 +160 +159 +158 +156 +155 +155 +153 +151 +150 +148 +147 +146 +144 +142 +141 +139 +137 +135 +133 +132 +129 +127 +126 +123 +121 +119 +117 +115 +112 +110 +108 +107 +104 +102 +100 +97 +95 +92 +90 +88 +85 +83 +81 +79 +75 +73 +71 +69 +66 +63 +61 +58 +56 +55 +57 +60 +62 +65 +67 +69 +72 +74 +77 +80 +82 +84 +87 +89 +92 +94 +96 +99 +101 +103 +106 +108 +110 +112 +115 +117 +119 +121 +123 +125 +127 +130 +132 +133 +136 +137 +139 +141 +143 +145 +146 +148 +149 +151 +153 +154 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +166 +166 +167 +168 +167 +168 +168 +168 +168 +167 +167 +167 +166 +165 +165 +164 +163 +163 +162 +161 +159 +158 +156 +155 +154 +152 +151 +149 +148 +146 +144 +143 +141 +139 +138 +135 +133 +131 +130 +127 +126 +123 +121 +119 +117 +115 +113 +111 +108 +106 +104 +101 +99 +97 +95 +91 +89 +87 +84 +82 +79 +77 +74 +72 +70 +67 +65 +62 +59 +57 +56 +58 +60 +63 +66 +68 +71 +73 +76 +79 +81 +84 +86 +89 +91 +94 +96 +98 +100 +103 +105 +107 +110 +112 +114 +116 +118 +121 +123 +125 +127 +130 +131 +133 +136 +137 +139 +141 +143 +145 +146 +149 +150 +152 +153 +155 +156 +158 +159 +161 +162 +163 +164 +165 +165 +167 +168 +168 +169 +170 +169 +170 +171 +171 +171 +170 +171 +170 +169 +170 +169 +168 +167 +166 +166 +165 +164 +163 +162 +160 +159 +158 +156 +155 +153 +151 +151 +148 +146 +145 +143 +142 +140 +137 +136 +133 +131 +130 +127 +125 +123 +121 +119 +116 +114 +111 +110 +107 +105 +102 +100 +98 +96 +93 +91 +89 +86 +84 +81 +79 +76 +74 +71 +68 +66 +64 +61 +58 +57 +60 +62 +65 +67 +70 +72 +75 +78 +80 +82 +84 +87 +90 +92 +95 +97 +99 +102 +105 +106 +109 +111 +114 +116 +118 +121 +122 +125 +127 +130 +132 +134 +136 +137 +139 +142 +144 +145 +147 +149 +151 +153 +154 +155 +157 +159 +160 +161 +163 +165 +165 +167 +168 +169 +170 +171 +171 +172 +172 +173 +173 +173 +173 +173 +173 +173 +173 +172 +172 +171 +171 +170 +169 +169 +168 +167 +166 +165 +163 +162 +161 +158 +157 +156 +154 +153 +151 +148 +147 +145 +143 +141 +139 +137 +136 +133 +131 +129 +127 +124 +123 +120 +118 +116 +113 +111 +109 +107 +104 +102 +99 +97 +95 +92 +89 +87 +85 +82 +80 +77 +75 +72 +70 +67 +65 +62 +60 +58 +61 +63 +66 +69 +71 +74 +76 +79 +81 +84 +86 +89 +91 +93 +96 +98 +101 +103 +105 +108 +110 +113 +116 +118 +120 +122 +125 +126 +129 +131 +133 +135 +137 +139 +142 +144 +145 +148 +149 +151 +153 +154 +156 +158 +160 +161 +163 +164 +165 +166 +168 +169 +171 +171 +172 +173 +174 +174 +175 +175 +176 +176 +176 +176 +176 +176 +175 +175 +175 +174 +174 +173 +172 +171 +170 +169 +168 +167 +165 +165 +163 +161 +160 +158 +156 +155 +153 +151 +149 +147 +145 +144 +141 +140 +137 +135 +133 +131 +129 +127 +124 +122 +120 +117 +115 +113 +110 +108 +106 +103 +100 +98 +96 +94 +91 +89 +86 +83 +81 +78 +76 +74 +71 +68 +66 +64 +60 +59 +62 +65 +67 +70 +73 +75 +78 +80 +83 +85 +88 +90 +92 +95 +97 +100 +103 +105 +107 +109 +112 +114 +117 +119 +121 +123 +126 +128 +131 +133 +135 +137 +139 +141 +143 +146 +148 +149 +152 +153 +155 +156 +158 +160 +162 +164 +165 +167 +168 +169 +170 +172 +173 +174 +175 +175 +177 +177 +177 +178 +178 +179 +179 +179 +179 +179 +179 +178 +178 +177 +177 +176 +175 +173 +173 +171 +171 +170 +168 +167 +165 +163 +162 +161 +159 +157 +155 +153 +151 +150 +148 +146 +143 +141 +139 +137 +134 +133 +130 +128 +126 +124 +122 +119 +117 +114 +112 +109 +107 +105 +102 +100 +97 +95 +92 +90 +88 +84 +83 +80 +77 +75 +72 +70 +67 +65 +62 +61 +63 +66 +68 +71 +73 +76 +79 +81 +84 +86 +89 +91 +94 +96 +99 +102 +104 +106 +109 +111 +113 +116 +119 +120 +123 +125 +127 +130 +132 +134 +137 +139 +141 +143 +145 +147 +150 +151 +154 +155 +157 +159 +161 +162 +165 +165 +167 +169 +171 +172 +173 +174 +176 +177 +178 +178 +179 +180 +181 +181 +181 +182 +182 +182 +182 +182 +181 +181 +180 +180 +179 +178 +178 +176 +176 +175 +173 +172 +170 +169 +167 +166 +164 +162 +160 +159 +157 +155 +154 +152 +149 +147 +146 +143 +141 +139 +136 +134 +132 +130 +128 +125 +123 +120 +118 +116 +114 +111 +109 +106 +104 +101 +98 +96 +94 +91 +89 +87 +83 +81 +79 +76 +73 +71 +69 +65 +63 +61 +64 +66 +69 +72 +74 +77 +80 +82 +85 +88 +90 +93 +95 +98 +100 +102 +105 +107 +110 +112 +115 +117 +120 +122 +124 +127 +129 +131 +134 +136 +139 +141 +143 +145 +147 +150 +151 +154 +155 +158 +159 +161 +163 +164 +167 +168 +170 +171 +173 +174 +176 +177 +178 +179 +180 +181 +182 +183 +183 +183 +184 +185 +185 +185 +185 +185 +184 +184 +183 +183 +182 +182 +180 +179 +178 +177 +175 +174 +173 +172 +169 +168 +167 +165 +163 +161 +159 +158 +155 +153 +151 +149 +147 +145 +143 +141 +138 +136 +134 +131 +130 +127 +124 +122 +120 +117 +115 +113 +110 +108 +105 +103 +100 +97 +95 +92 +90 +87 +85 +82 +79 +77 +74 +72 +69 +66 +64 +63 +65 +68 +70 +73 +75 +78 +81 +83 +86 +88 +91 +94 +97 +99 +101 +104 +106 +109 +111 +114 +116 +118 +121 +124 +126 +128 +131 +133 +136 +138 +140 +142 +145 +147 +149 +151 +154 +156 +157 +159 +161 +164 +166 +167 +169 +170 +172 +173 +175 +177 +178 +180 +180 +182 +183 +184 +185 +185 +186 +187 +187 +187 +187 +188 +187 +187 +186 +186 +186 +186 +184 +184 +183 +182 +181 +179 +178 +177 +176 +174 +172 +171 +169 +167 +165 +163 +162 +159 +157 +155 +154 +151 +149 +146 +144 +142 +140 +138 +135 +133 +131 +128 +126 +123 +121 +119 +116 +114 +112 +109 +107 +104 +101 +99 +96 +94 +91 +88 +86 +84 +81 +78 +76 +73 +70 +67 +65 +64 +66 +69 +72 +74 +76 +79 +82 +84 +87 +90 +92 +95 +97 +100 +103 +105 +108 +110 +113 +115 +118 +120 +122 +125 +128 +130 +132 +135 +137 +139 +142 +144 +146 +149 +151 +153 +155 +158 +160 +161 +163 +166 +167 +169 +171 +172 +174 +176 +178 +179 +180 +181 +183 +184 +186 +186 +187 +188 +188 +189 +190 +190 +191 +190 +190 +190 +190 +189 +188 +188 +187 +187 +185 +184 +184 +182 +180 +179 +177 +176 +175 +172 +171 +169 +168 +166 +163 +161 +160 +157 +155 +153 +151 +148 +146 +144 +141 +140 +137 +134 +133 +130 +128 +125 +122 +120 +118 +115 +112 +110 +108 +105 +103 +100 +97 +95 +92 +90 +88 +84 +82 +79 +77 +74 +71 +68 +66 +64 +67 +70 +73 +75 +77 +80 +83 +86 +88 +91 +93 +96 +99 +101 +104 +106 +109 +112 +114 +116 +119 +122 +124 +126 +129 +131 +134 +137 +138 +141 +144 +145 +148 +150 +152 +155 +157 +159 +161 +163 +166 +168 +170 +171 +173 +175 +177 +179 +180 +181 +183 +184 +186 +187 +188 +189 +189 +191 +191 +192 +193 +193 +193 +193 +193 +193 +193 +192 +192 +191 +190 +189 +188 +187 +186 +185 +183 +181 +180 +179 +177 +175 +173 +171 +169 +168 +165 +163 +161 +159 +157 +155 +152 +150 +148 +146 +143 +141 +138 +136 +134 +131 +129 +126 +124 +121 +119 +117 +114 +111 +108 +107 +104 +102 +98 +96 +94 +90 +88 +85 +83 +80 +77 +75 +72 +70 +67 +65 +68 +71 +73 +76 +79 +81 +84 +86 +89 +91 +94 +97 +100 +102 +105 +108 +110 +112 +115 +118 +120 +123 +125 +128 +130 +133 +135 +138 +140 +142 +145 +147 +150 +152 +154 +157 +158 +161 +163 +165 +167 +169 +171 +174 +175 +178 +179 +181 +182 +184 +185 +187 +188 +189 +190 +192 +193 +193 +194 +194 +195 +195 +195 +196 +196 +196 +196 +195 +194 +193 +193 +191 +190 +189 +188 +187 +185 +184 +182 +180 +179 +177 +175 +173 +171 +169 +167 +165 +163 +160 +159 +156 +154 +152 +149 +147 +144 +143 +140 +138 +135 +132 +130 +127 +125 +123 +120 +117 +115 +113 +110 +108 +104 +102 +100 +97 +94 +92 +89 +86 +83 +81 +78 +75 +73 +71 +68 +66 +69 +71 +74 +76 +79 +82 +84 +88 +90 +93 +96 +98 +100 +104 +106 +108 +111 +114 +116 +119 +121 +124 +126 +129 +132 +134 +136 +139 +141 +144 +146 +149 +151 +153 +156 +158 +160 +163 +165 +167 +169 +171 +173 +175 +177 +179 +181 +183 +185 +186 +188 +189 +191 +192 +193 +194 +195 +196 +197 +197 +198 +198 +199 +199 +199 +198 +198 +198 +197 +196 +196 +195 +193 +192 +190 +190 +188 +186 +185 +183 +181 +180 +177 +175 +173 +171 +170 +167 +165 +163 +160 +158 +155 +154 +151 +149 +146 +144 +141 +139 +136 +134 +131 +129 +127 +124 +122 +119 +116 +114 +111 +109 +105 +103 +101 +98 +96 +93 +90 +88 +85 +82 +80 +77 +74 +72 +68 +67 +70 +73 +75 +77 +81 +83 +86 +88 +91 +93 +97 +99 +101 +104 +107 +110 +112 +115 +117 +120 +123 +126 +128 +131 +133 +135 +138 +140 +143 +145 +148 +150 +152 +155 +158 +160 +162 +164 +166 +169 +171 +173 +175 +178 +180 +182 +183 +185 +187 +188 +190 +192 +193 +194 +196 +197 +198 +199 +199 +201 +200 +201 +201 +201 +201 +202 +201 +200 +199 +199 +198 +197 +196 +194 +193 +192 +190 +189 +187 +185 +183 +181 +180 +178 +175 +173 +171 +169 +166 +165 +162 +160 +157 +155 +153 +150 +148 +145 +143 +140 +138 +136 +132 +131 +127 +125 +123 +120 +118 +115 +113 +110 +107 +104 +101 +99 +97 +94 +91 +88 +86 +83 +81 +78 +75 +72 +70 +67 +71 +74 +76 +78 +82 +84 +87 +89 +92 +95 +97 +100 +103 +105 +108 +110 +113 +116 +119 +121 +123 +126 +129 +131 +134 +137 +140 +141 +145 +147 +149 +152 +154 +156 +159 +161 +163 +166 +168 +171 +172 +175 +177 +179 +181 +183 +185 +187 +189 +191 +192 +194 +195 +197 +198 +199 +200 +202 +202 +203 +203 +204 +205 +205 +204 +204 +204 +203 +202 +201 +201 +199 +199 +197 +195 +194 +192 +191 +189 +187 +185 +183 +181 +179 +177 +175 +172 +171 +168 +166 +164 +162 +159 +156 +154 +152 +149 +146 +144 +141 +139 +137 +133 +131 +129 +126 +124 +121 +118 +116 +113 +110 +108 +105 +103 +100 +97 +94 +92 +89 +86 +84 +81 +79 +76 +73 +71 +69 +71 +73 +77 +79 +82 +85 +88 +90 +93 +95 +98 +101 +104 +106 +109 +111 +114 +117 +120 +122 +125 +128 +130 +133 +135 +137 +141 +143 +145 +148 +151 +153 +155 +157 +161 +163 +165 +168 +170 +172 +175 +177 +179 +181 +183 +185 +187 +189 +191 +193 +194 +196 +197 +199 +200 +202 +203 +204 +205 +206 +207 +207 +207 +207 +207 +207 +207 +206 +205 +205 +204 +202 +200 +200 +198 +197 +194 +193 +191 +189 +188 +185 +183 +181 +179 +176 +175 +173 +170 +167 +165 +163 +160 +158 +155 +153 +150 +148 +146 +142 +140 +137 +135 +133 +129 +127 +125 +122 +119 +117 +114 +112 +109 +106 +103 +101 +98 +95 +93 +90 +87 +85 +82 +79 +76 +74 +71 +69 +72 +74 +77 +80 +83 +85 +88 +90 +94 +96 +99 +102 +104 +107 +110 +113 +115 +118 +120 +123 +126 +129 +131 +134 +136 +139 +141 +144 +147 +149 +152 +154 +157 +159 +161 +165 +166 +169 +171 +174 +176 +178 +180 +183 +185 +187 +189 +191 +193 +195 +197 +199 +201 +202 +203 +205 +206 +207 +208 +208 +210 +210 +210 +210 +210 +209 +209 +209 +208 +207 +206 +204 +204 +202 +201 +199 +197 +195 +193 +191 +189 +187 +185 +183 +181 +178 +176 +174 +171 +169 +167 +165 +162 +159 +157 +154 +151 +149 +147 +144 +141 +139 +137 +134 +131 +129 +126 +123 +120 +118 +115 +112 +109 +107 +105 +102 +99 +96 +94 +91 +88 +86 +83 +80 +78 +74 +72 +70 +73 +76 +78 +81 +84 +86 +88 +92 +95 +98 +100 +103 +106 +108 +111 +114 +116 +118 +121 +124 +126 +129 +132 +134 +137 +140 +142 +145 +148 +150 +153 +155 +158 +160 +163 +165 +168 +171 +173 +175 +178 +180 +182 +185 +187 +189 +191 +194 +195 +197 +199 +201 +203 +204 +206 +207 +209 +209 +211 +212 +212 +212 +213 +212 +213 +213 +212 +212 +211 +210 +209 +207 +206 +204 +202 +201 +199 +198 +195 +193 +191 +189 +187 +184 +182 +180 +177 +175 +173 +170 +168 +166 +163 +160 +158 +155 +152 +151 +148 +145 +142 +140 +138 +134 +132 +129 +127 +124 +121 +119 +116 +113 +110 +108 +105 +102 +100 +97 +94 +91 +89 +86 +83 +81 +78 +75 +72 +71 +73 +76 +78 +81 +85 +87 +90 +92 +95 +98 +100 +103 +106 +109 +112 +114 +116 +119 +123 +125 +127 +130 +133 +135 +139 +141 +143 +146 +149 +152 +154 +157 +160 +162 +164 +167 +170 +172 +175 +177 +179 +181 +184 +186 +189 +191 +193 +195 +197 +199 +202 +203 +205 +207 +208 +210 +211 +212 +213 +214 +215 +215 +216 +216 +215 +215 +215 +214 +213 +212 +211 +209 +208 +207 +205 +203 +201 +199 +198 +195 +193 +191 +189 +186 +184 +181 +179 +177 +175 +171 +170 +167 +164 +162 +159 +157 +154 +152 +149 +146 +144 +141 +138 +136 +133 +131 +128 +125 +122 +119 +117 +114 +111 +109 +106 +103 +101 +98 +95 +93 +90 +87 +84 +81 +79 +76 +73 +71 +74 +77 +79 +82 +85 +88 +91 +93 +95 +98 +101 +104 +106 +109 +112 +114 +118 +120 +123 +126 +128 +131 +134 +136 +139 +142 +145 +147 +149 +153 +155 +158 +160 +163 +165 +169 +171 +173 +176 +178 +181 +183 +186 +188 +190 +192 +195 +197 +199 +201 +203 +206 +207 +209 +210 +212 +213 +215 +216 +216 +218 +218 +218 +219 +218 +218 +217 +217 +216 +215 +214 +212 +211 +208 +207 +205 +204 +201 +199 +197 +195 +192 +190 +188 +185 +183 +181 +178 +175 +173 +171 +168 +165 +163 +161 +158 +156 +152 +149 +147 +144 +141 +139 +136 +133 +131 +128 +126 +123 +120 +118 +115 +112 +109 +107 +104 +101 +99 +96 +93 +90 +87 +85 +82 +79 +77 +74 +71 +74 +77 +80 +82 +85 +88 +91 +94 +96 +99 +102 +104 +107 +110 +113 +116 +118 +122 +124 +126 +129 +132 +135 +137 +141 +143 +145 +148 +150 +153 +156 +158 +161 +164 +167 +170 +172 +174 +177 +179 +182 +185 +187 +190 +191 +194 +197 +199 +201 +203 +205 +207 +209 +211 +213 +214 +216 +217 +218 +220 +221 +220 +221 +221 +221 +221 +220 +219 +218 +217 +216 +215 +212 +211 +209 +207 +205 +203 +201 +198 +197 +194 +192 +190 +187 +185 +182 +179 +177 +174 +172 +169 +167 +164 +161 +159 +156 +154 +150 +148 +145 +143 +140 +138 +134 +132 +129 +126 +124 +121 +118 +115 +112 +110 +108 +105 +102 +100 +96 +94 +91 +88 +86 +82 +80 +77 +74 +72 +75 +77 +80 +83 +86 +89 +92 +95 +97 +100 +102 +105 +108 +111 +113 +117 +119 +122 +124 +128 +130 +133 +135 +139 +140 +144 +146 +149 +152 +154 +157 +160 +162 +165 +168 +171 +173 +175 +178 +181 +183 +186 +188 +190 +193 +195 +198 +201 +203 +205 +207 +209 +211 +213 +214 +217 +219 +220 +221 +222 +223 +223 +223 +224 +224 +223 +223 +222 +221 +219 +218 +217 +215 +213 +211 +209 +207 +205 +203 +200 +198 +196 +193 +191 +188 +185 +184 +180 +178 +175 +173 +170 +167 +165 +163 +160 +157 +154 +151 +149 +146 +143 +141 +138 +136 +133 +130 +127 +125 +122 +119 +116 +113 +110 +108 +106 +102 +100 +97 +94 +92 +89 +86 +83 +81 +77 +75 +73 +75 +78 +81 +84 +87 +89 +92 +95 +97 +101 +103 +106 +108 +111 +114 +117 +119 +122 +125 +128 +131 +134 +136 +139 +142 +145 +147 +150 +152 +155 +158 +161 +163 +166 +168 +171 +174 +177 +179 +182 +185 +187 +190 +192 +195 +197 +200 +201 +205 +206 +209 +211 +213 +215 +217 +219 +221 +222 +224 +224 +226 +227 +226 +227 +227 +226 +225 +225 +224 +222 +221 +219 +217 +215 +214 +211 +208 +207 +204 +202 +200 +197 +194 +192 +190 +187 +184 +182 +179 +177 +174 +172 +168 +166 +164 +161 +158 +156 +153 +150 +147 +144 +142 +139 +136 +133 +131 +128 +125 +122 +120 +117 +114 +112 +109 +106 +103 +100 +97 +95 +92 +89 +87 +83 +80 +78 +75 +73 +76 +78 +81 +84 +87 +89 +92 +95 +98 +101 +104 +106 +109 +112 +115 +117 +120 +123 +126 +128 +132 +134 +137 +140 +142 +145 +148 +150 +154 +156 +158 +161 +164 +167 +170 +172 +175 +177 +180 +183 +185 +188 +191 +193 +196 +198 +201 +203 +205 +208 +210 +213 +215 +218 +219 +221 +223 +225 +226 +227 +229 +229 +230 +229 +229 +229 +228 +227 +226 +224 +223 +221 +219 +217 +215 +213 +210 +208 +206 +203 +201 +199 +196 +193 +191 +188 +185 +183 +180 +178 +175 +172 +169 +167 +164 +161 +159 +156 +154 +150 +148 +145 +143 +140 +136 +134 +131 +129 +125 +123 +120 +118 +114 +112 +110 +107 +103 +101 +98 +95 +93 +90 +87 +84 +82 +78 +76 +74 +76 +79 +81 +85 +88 +90 +93 +95 +98 +101 +104 +107 +109 +112 +115 +117 +121 +123 +126 +129 +132 +135 +137 +140 +142 +146 +148 +151 +154 +156 +159 +162 +164 +167 +170 +173 +176 +179 +181 +184 +186 +189 +192 +194 +197 +200 +202 +205 +207 +210 +212 +215 +217 +219 +221 +223 +225 +227 +228 +229 +231 +231 +232 +233 +232 +232 +231 +229 +228 +227 +225 +223 +221 +219 +216 +214 +212 +209 +207 +204 +202 +200 +197 +194 +192 +189 +187 +184 +181 +178 +176 +173 +170 +168 +164 +163 +160 +157 +154 +151 +148 +146 +143 +140 +137 +134 +131 +129 +126 +124 +120 +117 +115 +113 +110 +106 +104 +102 +98 +95 +93 +90 +87 +84 +81 +78 +76 +74 +76 +80 +83 +85 +88 +90 +94 +96 +99 +101 +104 +107 +110 +113 +116 +118 +122 +124 +127 +129 +132 +135 +138 +140 +144 +146 +149 +151 +155 +157 +160 +163 +166 +168 +171 +174 +176 +179 +181 +185 +187 +190 +192 +195 +198 +200 +203 +206 +208 +210 +214 +216 +218 +221 +223 +225 +227 +229 +231 +232 +233 +235 +235 +235 +235 +234 +234 +232 +231 +229 +228 +225 +223 +221 +219 +216 +214 +211 +209 +206 +203 +201 +198 +196 +193 +190 +187 +184 +182 +179 +177 +174 +171 +168 +166 +163 +160 +157 +154 +151 +149 +146 +143 +141 +138 +135 +132 +129 +127 +124 +121 +118 +115 +113 +110 +107 +104 +102 +98 +96 +93 +91 +88 +85 +82 +79 +76 +73 +76 +80 +82 +85 +88 +91 +94 +96 +100 +102 +105 +107 +110 +113 +115 +119 +122 +125 +127 +130 +133 +136 +138 +141 +144 +147 +149 +152 +155 +158 +161 +164 +166 +169 +172 +174 +177 +179 +182 +185 +188 +191 +193 +197 +199 +202 +204 +207 +210 +212 +215 +217 +220 +222 +225 +227 +229 +232 +233 +235 +236 +237 +238 +238 +238 +238 +236 +235 +233 +231 +229 +226 +224 +222 +219 +218 +215 +212 +210 +207 +205 +202 +199 +196 +193 +191 +188 +186 +183 +179 +177 +175 +171 +169 +166 +163 +161 +158 +155 +152 +150 +146 +144 +141 +138 +135 +132 +130 +127 +125 +121 +119 +116 +113 +111 +107 +105 +102 +99 +96 +94 +91 +88 +86 +82 +80 +76 +75 +76 +80 +82 +86 +88 +91 +93 +97 +99 +102 +105 +108 +111 +113 +116 +119 +121 +124 +127 +130 +133 +136 +139 +141 +144 +147 +150 +153 +155 +159 +161 +163 +166 +169 +172 +174 +178 +180 +183 +186 +188 +192 +194 +196 +200 +202 +205 +208 +210 +213 +215 +218 +221 +224 +226 +229 +231 +233 +235 +237 +239 +240 +240 +241 +241 +240 +239 +237 +235 +233 +231 +228 +226 +223 +221 +218 +216 +213 +210 +208 +205 +202 +200 +197 +194 +191 +189 +186 +183 +181 +177 +175 +172 +169 +167 +163 +161 +158 +155 +152 +149 +147 +144 +141 +139 +136 +133 +130 +127 +125 +122 +119 +116 +113 +110 +108 +105 +102 +100 +97 +94 +91 +88 +85 +83 +80 +77 +75 +77 +80 +83 +85 +88 +91 +94 +97 +99 +102 +105 +108 +111 +114 +116 +120 +122 +125 +128 +130 +133 +136 +139 +142 +145 +148 +150 +153 +156 +158 +161 +164 +167 +169 +173 +176 +178 +180 +184 +186 +189 +192 +195 +197 +200 +203 +206 +209 +212 +214 +217 +220 +222 +225 +227 +230 +232 +234 +237 +240 +241 +243 +243 +244 +243 +242 +241 +239 +237 +235 +232 +230 +227 +224 +222 +219 +216 +214 +211 +208 +206 +203 +200 +197 +194 +192 +190 +186 +183 +181 +178 +175 +173 +170 +166 +164 +161 +158 +156 +153 +150 +147 +145 +141 +139 +136 +134 +131 +128 +125 +122 +119 +117 +114 +111 +108 +105 +102 +99 +97 +94 +91 +88 +85 +83 +80 +77 +74 +77 +80 +83 +86 +88 +92 +94 +97 +100 +102 +105 +108 +111 +113 +117 +119 +123 +125 +128 +131 +133 +137 +139 +141 +145 +148 +151 +153 +156 +159 +161 +164 +168 +170 +173 +176 +178 +181 +184 +187 +189 +193 +196 +198 +200 +204 +206 +209 +212 +214 +218 +220 +223 +226 +229 +231 +234 +236 +239 +241 +243 +245 +246 +247 +246 +245 +243 +241 +239 +236 +234 +231 +228 +226 +223 +220 +217 +214 +212 +209 +206 +204 +201 +198 +196 +193 +190 +187 +184 +181 +179 +176 +173 +170 +168 +164 +162 +159 +156 +153 +151 +148 +145 +142 +139 +137 +133 +130 +128 +125 +122 +119 +117 +114 +111 +108 +105 +103 +100 +97 +94 +92 +88 +86 +83 +80 +77 +75 +77 +80 +83 +86 +88 +92 +94 +97 +100 +103 +106 +109 +111 +114 +117 +119 +122 +125 +128 +131 +134 +136 +140 +142 +145 +148 +151 +153 +156 +159 +162 +165 +167 +170 +173 +176 +178 +182 +185 +187 +190 +193 +196 +199 +202 +204 +207 +209 +213 +215 +218 +220 +223 +227 +229 +232 +235 +238 +240 +242 +245 +247 +249 +250 +249 +247 +245 +242 +240 +237 +234 +232 +229 +226 +224 +221 +218 +216 +213 +210 +206 +204 +201 +198 +196 +193 +190 +187 +185 +182 +178 +175 +173 +170 +168 +164 +162 +159 +156 +153 +150 +148 +145 +142 +139 +136 +133 +131 +128 +126 +122 +120 +117 +114 +111 +109 +106 +103 +100 +97 +94 +91 +89 +85 +83 +80 +77 +75 +77 +80 +83 +86 +89 +91 +94 +97 +100 +102 +106 +109 +112 +115 +117 +120 +123 +125 +128 +131 +134 +137 +139 +142 +145 +147 +151 +154 +156 +159 +162 +164 +167 +171 +174 +176 +179 +181 +185 +187 +190 +193 +196 +198 +202 +204 +207 +210 +213 +216 +218 +221 +224 +227 +230 +232 +235 +238 +241 +243 +246 +248 +251 +252 +251 +249 +246 +244 +241 +238 +235 +232 +229 +226 +224 +221 +219 +216 +213 +209 +207 +204 +202 +199 +195 +193 +190 +187 +185 +182 +179 +176 +173 +171 +168 +165 +162 +159 +156 +154 +151 +148 +146 +142 +139 +137 +134 +131 +129 +125 +123 +120 +117 +114 +112 +109 +105 +102 +100 +98 +95 +92 +89 +86 +84 +80 +77 +75 +77 +81 +83 +86 +88 +92 +94 +98 +100 +103 +105 +108 +111 +114 +117 +120 +123 +126 +128 +131 +134 +136 +139 +143 +145 +148 +151 +154 +157 +159 +163 +164 +168 +170 +174 +176 +179 +181 +185 +187 +190 +193 +196 +199 +201 +204 +207 +210 +213 +215 +219 +221 +224 +226 +230 +233 +235 +238 +241 +244 +247 +250 +252 +255 +252 +250 +246 +244 +241 +238 +236 +233 +230 +227 +224 +222 +218 +216 +213 +210 +207 +204 +202 +199 +196 +193 +190 +188 +185 +182 +179 +176 +173 +171 +167 +164 +162 +159 +156 +154 +150 +148 +145 +142 +139 +136 +133 +131 +128 +125 +122 +120 +117 +115 +111 +108 +106 +103 +100 +97 +94 +92 +89 +86 +83 +81 +78 +74 +78 +80 +83 +86 +88 +92 +95 +97 +100 +103 +106 +109 +111 +114 +117 +119 +123 +125 +128 +131 +134 +136 +140 +142 +145 +148 +151 +153 +157 +159 +162 +165 +168 +170 +173 +177 +179 +182 +185 +187 +190 +192 +196 +199 +201 +204 +207 +210 +213 +216 +218 +221 +224 +227 +230 +232 +235 +238 +241 +243 +246 +249 +251 +253 +251 +249 +246 +243 +241 +238 +235 +233 +230 +227 +224 +221 +218 +216 +213 +210 +207 +204 +201 +198 +196 +192 +191 +187 +184 +182 +179 +176 +173 +170 +168 +165 +162 +159 +156 +153 +151 +148 +145 +142 +140 +137 +133 +131 +129 +125 +122 +120 +117 +114 +111 +108 +106 +103 +100 +98 +95 +92 +89 +86 +83 +80 +78 +74 +78 +80 +83 +86 +89 +91 +94 +97 +100 +103 +105 +109 +111 +114 +116 +120 +123 +126 +128 +131 +134 +136 +139 +142 +145 +148 +150 +153 +156 +159 +162 +165 +167 +170 +173 +176 +179 +182 +184 +188 +190 +193 +196 +198 +201 +204 +207 +209 +212 +215 +218 +221 +223 +226 +229 +232 +235 +237 +239 +242 +244 +247 +249 +249 +249 +247 +245 +243 +239 +238 +235 +232 +229 +227 +224 +220 +218 +215 +213 +210 +206 +204 +201 +199 +196 +193 +189 +188 +184 +181 +179 +176 +173 +170 +168 +165 +162 +159 +156 +153 +150 +147 +145 +143 +139 +137 +133 +131 +128 +126 +122 +120 +117 +114 +112 +109 +105 +103 +100 +97 +94 +92 +89 +86 +83 +81 +77 +74 +77 +81 +83 +86 +89 +92 +95 +97 +100 +103 +105 +108 +111 +114 +116 +120 +122 +125 +128 +131 +134 +136 +140 +142 +145 +147 +151 +154 +156 +159 +162 +165 +167 +170 +172 +175 +178 +181 +184 +187 +190 +193 +195 +198 +201 +203 +206 +209 +212 +215 +217 +220 +223 +226 +229 +231 +234 +236 +239 +241 +243 +245 +246 +246 +246 +245 +243 +241 +238 +236 +234 +231 +228 +226 +222 +220 +217 +215 +212 +209 +207 +203 +201 +198 +195 +193 +190 +187 +184 +181 +178 +176 +173 +170 +167 +164 +161 +159 +156 +154 +150 +148 +145 +142 +139 +136 +134 +131 +128 +125 +122 +120 +117 +114 +111 +108 +105 +103 +100 +97 +95 +91 +89 +86 +83 +80 +77 +75 +77 +80 +83 +86 +88 +92 +94 +97 +99 +103 +106 +109 +111 +113 +117 +120 +122 +125 +128 +131 +133 +137 +139 +142 +145 +147 +151 +153 +155 +158 +161 +164 +167 +170 +173 +175 +178 +180 +183 +187 +189 +192 +194 +197 +200 +203 +205 +209 +212 +214 +217 +219 +222 +225 +227 +229 +232 +234 +237 +239 +241 +242 +243 +244 +243 +242 +241 +240 +237 +235 +233 +229 +227 +225 +222 +219 +217 +213 +211 +208 +206 +203 +200 +198 +195 +192 +189 +186 +184 +181 +178 +175 +172 +170 +167 +164 +161 +158 +156 +153 +150 +147 +144 +142 +139 +136 +133 +131 +128 +125 +122 +119 +117 +114 +111 +108 +106 +103 +100 +97 +94 +91 +89 +86 +83 +80 +77 +75 +77 +79 +83 +85 +88 +91 +94 +97 +100 +102 +105 +108 +111 +114 +116 +119 +122 +124 +127 +130 +133 +136 +139 +141 +145 +147 +150 +152 +155 +159 +161 +164 +166 +170 +172 +175 +177 +181 +184 +186 +189 +191 +195 +197 +199 +202 +205 +208 +211 +213 +216 +219 +221 +224 +226 +228 +231 +233 +235 +237 +239 +239 +241 +241 +241 +239 +238 +237 +235 +233 +231 +228 +226 +223 +221 +219 +216 +213 +210 +207 +205 +202 +200 +197 +195 +192 +189 +186 +183 +181 +177 +175 +172 +169 +166 +164 +161 +159 +155 +152 +149 +147 +144 +141 +139 +136 +133 +130 +128 +125 +122 +119 +116 +114 +110 +108 +105 +102 +100 +97 +94 +91 +89 +86 +83 +80 +77 +74 +77 +79 +82 +85 +88 +90 +93 +96 +99 +102 +105 +107 +110 +113 +116 +119 +121 +125 +127 +130 +133 +135 +138 +141 +143 +147 +149 +152 +155 +158 +161 +163 +166 +169 +172 +174 +177 +180 +182 +185 +188 +191 +194 +196 +199 +201 +204 +207 +209 +212 +215 +217 +220 +222 +224 +227 +229 +231 +233 +235 +236 +237 +238 +238 +237 +238 +236 +235 +233 +231 +229 +227 +224 +223 +219 +218 +214 +212 +209 +207 +204 +201 +199 +197 +193 +190 +188 +185 +183 +180 +177 +174 +171 +169 +166 +163 +160 +157 +155 +152 +149 +147 +144 +141 +139 +135 +132 +130 +127 +124 +122 +118 +116 +113 +111 +108 +105 +102 +99 +96 +94 +91 +88 +86 +82 +80 +77 +74 +77 +79 +82 +85 +87 +90 +93 +96 +99 +102 +104 +107 +110 +113 +115 +118 +121 +123 +127 +130 +132 +135 +138 +141 +144 +147 +149 +152 +155 +157 +160 +162 +166 +168 +171 +174 +176 +179 +182 +185 +187 +190 +193 +196 +198 +200 +203 +206 +208 +211 +213 +216 +219 +220 +223 +225 +227 +229 +231 +233 +234 +235 +235 +235 +235 +234 +233 +232 +231 +229 +227 +225 +223 +220 +218 +215 +213 +211 +208 +206 +203 +201 +198 +195 +192 +190 +187 +184 +182 +180 +176 +174 +171 +168 +165 +162 +160 +157 +155 +152 +149 +146 +143 +141 +138 +135 +132 +130 +126 +124 +121 +118 +116 +113 +110 +107 +104 +102 +99 +96 +93 +91 +88 +85 +82 +79 +76 +73 +77 +79 +81 +85 +88 +90 +93 +96 +98 +101 +104 +106 +109 +112 +115 +118 +120 +124 +126 +129 +132 +134 +137 +140 +143 +146 +149 +151 +154 +157 +159 +162 +165 +167 +170 +173 +176 +178 +181 +184 +187 +189 +191 +194 +197 +200 +202 +204 +207 +210 +212 +214 +217 +218 +221 +223 +225 +227 +228 +229 +231 +232 +233 +233 +233 +232 +230 +230 +229 +227 +225 +223 +221 +219 +217 +215 +212 +209 +208 +205 +202 +200 +197 +195 +191 +189 +186 +184 +181 +179 +175 +173 +170 +167 +165 +162 +159 +157 +153 +151 +148 +146 +143 +140 +137 +135 +132 +129 +127 +124 +120 +118 +115 +112 +109 +106 +104 +101 +99 +95 +93 +90 +87 +84 +82 +79 +76 +73 +76 +79 +81 +84 +86 +89 +93 +95 +98 +101 +104 +106 +109 +112 +114 +117 +121 +123 +126 +129 +131 +134 +136 +139 +142 +145 +147 +151 +153 +156 +158 +162 +164 +167 +170 +172 +175 +177 +180 +183 +185 +188 +191 +193 +196 +199 +201 +203 +205 +208 +210 +213 +215 +217 +219 +221 +222 +224 +226 +227 +228 +229 +230 +230 +229 +229 +228 +227 +226 +225 +223 +221 +219 +217 +215 +213 +210 +208 +206 +204 +201 +198 +196 +193 +191 +188 +186 +182 +180 +178 +174 +172 +169 +166 +164 +162 +159 +156 +153 +150 +148 +145 +142 +139 +137 +134 +131 +128 +126 +123 +121 +118 +115 +112 +109 +106 +103 +101 +98 +95 +92 +90 +87 +84 +81 +78 +75 +72 +76 +78 +81 +83 +87 +89 +92 +95 +97 +101 +103 +106 +109 +112 +115 +117 +119 +123 +126 +128 +130 +133 +136 +139 +142 +144 +147 +149 +153 +155 +158 +160 +163 +166 +169 +171 +173 +177 +179 +181 +184 +187 +189 +192 +194 +197 +199 +202 +204 +207 +209 +211 +214 +215 +217 +219 +221 +223 +223 +224 +226 +227 +227 +226 +226 +227 +226 +225 +223 +223 +221 +218 +217 +215 +214 +211 +209 +207 +204 +202 +200 +197 +195 +192 +190 +187 +184 +182 +179 +176 +173 +171 +168 +166 +163 +161 +158 +156 +153 +150 +147 +144 +142 +139 +136 +133 +131 +128 +125 +122 +119 +117 +114 +111 +109 +105 +103 +100 +97 +95 +92 +89 +86 +83 +80 +78 +75 +72 +75 +77 +80 +83 +86 +89 +91 +94 +97 +99 +102 +105 +108 +111 +114 +116 +119 +121 +124 +127 +130 +132 +136 +138 +141 +143 +146 +149 +151 +154 +157 +159 +163 +165 +168 +170 +173 +176 +178 +181 +184 +186 +188 +191 +193 +196 +198 +200 +203 +205 +207 +209 +211 +213 +215 +216 +218 +220 +221 +222 +223 +223 +224 +224 +224 +223 +223 +222 +220 +220 +219 +217 +215 +213 +211 +209 +207 +205 +202 +200 +198 +196 +193 +191 +188 +186 +183 +181 +178 +175 +173 +170 +168 +165 +162 +160 +157 +155 +152 +149 +146 +143 +140 +138 +135 +133 +130 +127 +124 +121 +119 +116 +113 +111 +108 +105 +102 +99 +97 +95 +92 +89 +86 +83 +80 +77 +75 +72 +74 +77 +80 +82 +85 +88 +91 +94 +97 +99 +102 +105 +107 +111 +112 +116 +119 +122 +124 +126 +130 +132 +134 +137 +140 +143 +146 +148 +151 +153 +156 +159 +161 +164 +167 +169 +172 +174 +176 +179 +182 +185 +186 +190 +192 +194 +196 +199 +200 +203 +206 +208 +209 +211 +213 +214 +216 +217 +219 +220 +220 +221 +221 +221 +221 +221 +220 +220 +218 +217 +215 +215 +212 +211 +209 +207 +205 +203 +201 +199 +197 +194 +192 +190 +186 +185 +182 +179 +177 +175 +172 +169 +167 +164 +161 +159 +156 +153 +151 +148 +145 +143 +140 +137 +135 +132 +129 +127 +124 +121 +118 +115 +113 +110 +107 +104 +102 +99 +96 +93 +91 +88 +86 +83 +79 +77 +74 +71 +74 +77 +79 +82 +85 +88 +91 +93 +95 +99 +102 +104 +106 +109 +112 +115 +117 +120 +123 +125 +129 +132 +134 +137 +139 +142 +145 +147 +150 +152 +155 +158 +161 +163 +165 +168 +171 +173 +175 +178 +180 +183 +186 +188 +190 +193 +194 +197 +199 +201 +203 +206 +207 +209 +210 +212 +213 +214 +215 +216 +217 +218 +218 +218 +218 +218 +217 +217 +216 +215 +214 +212 +211 +209 +207 +205 +203 +202 +199 +197 +195 +193 +190 +188 +185 +183 +180 +178 +176 +173 +170 +168 +166 +163 +160 +157 +155 +153 +150 +147 +145 +142 +139 +136 +134 +131 +128 +126 +123 +120 +117 +115 +112 +109 +107 +104 +101 +99 +96 +93 +90 +88 +85 +82 +80 +76 +74 +71 +73 +76 +79 +82 +84 +87 +90 +92 +95 +98 +100 +104 +106 +109 +112 +114 +116 +120 +122 +125 +128 +130 +133 +136 +138 +141 +143 +147 +149 +151 +154 +156 +159 +162 +165 +167 +169 +172 +174 +177 +179 +181 +184 +186 +188 +191 +193 +195 +197 +199 +201 +203 +205 +207 +208 +209 +211 +212 +214 +214 +214 +215 +216 +216 +215 +215 +215 +214 +213 +212 +211 +210 +208 +207 +205 +203 +201 +199 +198 +195 +193 +190 +188 +186 +184 +182 +180 +177 +174 +171 +169 +167 +164 +162 +159 +157 +154 +151 +149 +146 +144 +141 +139 +135 +133 +131 +128 +125 +122 +120 +117 +114 +112 +108 +106 +103 +101 +98 +96 +92 +90 +87 +84 +81 +79 +76 +73 +70 +72 +75 +78 +81 +83 +86 +89 +91 +94 +97 +100 +102 +105 +108 +110 +113 +116 +119 +121 +124 +127 +129 +132 +134 +137 +140 +142 +145 +148 +150 +153 +155 +158 +160 +163 +165 +168 +171 +173 +176 +178 +180 +182 +185 +187 +189 +191 +193 +195 +197 +199 +201 +203 +205 +206 +207 +208 +210 +210 +211 +212 +212 +213 +212 +213 +212 +212 +212 +211 +209 +208 +207 +206 +204 +203 +200 +199 +197 +195 +193 +191 +189 +187 +185 +182 +180 +178 +176 +173 +170 +168 +165 +163 +160 +158 +155 +153 +151 +148 +145 +142 +139 +138 +135 +132 +130 +126 +124 +121 +118 +116 +114 +111 +108 +106 +103 +100 +97 +94 +92 +89 +86 +83 +81 +78 +75 +72 +69 +72 +75 +77 +80 +83 +86 +88 +91 +93 +96 +99 +101 +104 +107 +110 +112 +115 +117 +120 +123 +126 +128 +131 +133 +136 +139 +142 +144 +147 +149 +152 +154 +157 +159 +161 +164 +166 +169 +171 +174 +176 +179 +180 +183 +185 +187 +189 +191 +193 +195 +197 +199 +200 +202 +203 +205 +206 +207 +208 +209 +209 +210 +210 +210 +210 +210 +209 +209 +208 +207 +206 +204 +203 +202 +200 +199 +197 +195 +193 +191 +189 +188 +185 +183 +180 +178 +176 +173 +172 +169 +167 +164 +161 +160 +156 +154 +152 +149 +147 +144 +142 +139 +136 +133 +131 +128 +125 +123 +120 +118 +115 +112 +110 +107 +104 +102 +99 +97 +94 +91 +89 +85 +83 +80 +78 +74 +72 +68 +71 +74 +76 +79 +82 +85 +88 +90 +93 +95 +98 +101 +104 +107 +109 +112 +114 +117 +119 +122 +125 +127 +130 +133 +136 +138 +140 +142 +146 +147 +151 +152 +156 +158 +160 +163 +165 +168 +170 +172 +174 +177 +179 +181 +183 +185 +187 +189 +191 +193 +195 +196 +198 +200 +200 +202 +204 +204 +205 +205 +206 +206 +207 +207 +207 +207 +206 +206 +205 +204 +203 +202 +201 +199 +198 +197 +195 +193 +191 +190 +187 +185 +183 +181 +179 +177 +175 +173 +169 +168 +166 +163 +160 +158 +156 +153 +150 +148 +146 +143 +140 +138 +135 +133 +130 +128 +125 +122 +119 +117 +114 +112 +109 +106 +104 +101 +99 +95 +93 +91 +87 +85 +82 +79 +77 +73 +71 +68 +70 +73 +76 +79 +81 +84 +87 +89 +92 +95 +97 +100 +103 +105 +108 +111 +113 +116 +118 +121 +124 +126 +129 +131 +134 +137 +139 +141 +144 +147 +149 +151 +154 +157 +159 +161 +163 +166 +168 +170 +172 +175 +177 +180 +181 +183 +185 +187 +189 +191 +192 +194 +196 +197 +198 +200 +201 +202 +203 +203 +203 +204 +204 +204 +205 +204 +204 +203 +202 +202 +201 +200 +198 +197 +195 +194 +193 +191 +189 +187 +185 +184 +181 +179 +177 +175 +173 +170 +168 +166 +164 +162 +158 +157 +154 +152 +149 +146 +144 +142 +139 +136 +134 +132 +129 +126 +123 +121 +118 +116 +113 +110 +108 +105 +102 +100 +97 +95 +92 +89 +87 +84 +81 +78 +76 +73 +70 +67 +70 +72 +75 +77 +81 +83 +86 +89 +91 +94 +97 +99 +102 +104 +107 +110 +113 +115 +118 +120 +123 +125 +128 +131 +132 +135 +138 +141 +142 +145 +147 +150 +152 +155 +158 +160 +162 +164 +167 +168 +171 +173 +175 +177 +179 +181 +184 +185 +187 +188 +190 +192 +193 +195 +196 +196 +198 +199 +200 +200 +201 +201 +201 +202 +202 +201 +201 +201 +200 +199 +198 +197 +196 +194 +193 +192 +190 +189 +187 +185 +183 +182 +180 +177 +176 +173 +171 +169 +167 +165 +162 +160 +157 +155 +153 +150 +148 +146 +143 +141 +138 +136 +133 +131 +128 +126 +123 +120 +117 +115 +112 +110 +107 +105 +102 +99 +97 +94 +91 +89 +86 +83 +80 +77 +75 +72 +69 +66 +69 +72 +74 +77 +79 +82 +85 +87 +90 +93 +96 +98 +100 +104 +106 +108 +111 +113 +116 +119 +121 +124 +126 +129 +132 +134 +136 +139 +141 +144 +146 +149 +151 +154 +155 +158 +160 +163 +165 +167 +169 +172 +174 +175 +177 +179 +181 +183 +185 +186 +188 +189 +190 +192 +194 +194 +196 +196 +197 +197 +198 +198 +198 +199 +199 +198 +198 +198 +197 +196 +196 +194 +194 +192 +190 +189 +187 +186 +185 +183 +181 +180 +177 +175 +173 +172 +169 +167 +164 +162 +160 +158 +155 +154 +151 +149 +146 +143 +141 +139 +136 +134 +132 +129 +127 +124 +122 +119 +117 +114 +111 +109 +106 +103 +100 +98 +95 +92 +90 +88 +85 +82 +79 +77 +74 +71 +68 +65 +68 +71 +73 +76 +78 +82 +84 +86 +90 +92 +94 +97 +99 +102 +105 +107 +110 +113 +115 +117 +120 +122 +126 +128 +130 +132 +136 +137 +140 +143 +145 +147 +149 +152 +154 +156 +159 +161 +163 +166 +168 +169 +172 +174 +175 +177 +179 +180 +182 +184 +186 +187 +188 +190 +190 +191 +193 +193 +194 +195 +196 +195 +196 +196 +195 +196 +195 +194 +194 +194 +193 +192 +191 +189 +188 +186 +186 +184 +182 +181 +179 +177 +175 +173 +171 +170 +167 +165 +163 +161 +159 +157 +154 +152 +150 +147 +144 +143 +140 +137 +135 +133 +130 +128 +125 +123 +120 +117 +115 +112 +110 +108 +105 +103 +99 +97 +94 +91 +89 +87 +84 +81 +78 +76 +73 +71 +68 +64 +67 +70 +72 +75 +77 +81 +83 +85 +88 +91 +93 +96 +99 +101 +104 +107 +109 +112 +114 +117 +119 +121 +124 +126 +129 +132 +133 +136 +138 +141 +143 +145 +148 +150 +152 +155 +157 +159 +161 +163 +165 +167 +169 +171 +173 +175 +177 +179 +180 +182 +183 +185 +186 +187 +188 +189 +190 +191 +191 +192 +193 +193 +193 +193 +193 +192 +192 +192 +192 +191 +190 +189 +188 +187 +186 +184 +183 +181 +180 +178 +176 +175 +173 +172 +170 +167 +166 +163 +161 +159 +157 +154 +153 +151 +148 +146 +143 +141 +139 +136 +133 +132 +128 +127 +124 +121 +119 +116 +114 +112 +109 +106 +103 +101 +98 +96 +94 +91 +88 +86 +83 +80 +77 +75 +72 +70 +67 +63 +66 +69 +71 +74 +76 +79 +82 +85 +87 +90 +92 +95 +98 +100 +102 +105 +107 +110 +113 +115 +118 +120 +122 +125 +128 +130 +132 +135 +137 +140 +141 +144 +146 +149 +151 +153 +155 +157 +159 +161 +163 +166 +168 +170 +171 +172 +174 +176 +178 +179 +180 +182 +183 +185 +185 +186 +187 +188 +189 +190 +190 +189 +190 +190 +190 +190 +189 +189 +189 +188 +187 +186 +186 +184 +183 +182 +181 +179 +178 +176 +175 +172 +170 +169 +167 +165 +163 +161 +159 +157 +155 +153 +151 +149 +146 +144 +142 +139 +137 +135 +132 +130 +128 +125 +122 +121 +118 +115 +112 +110 +107 +105 +102 +100 +98 +94 +93 +89 +87 +84 +82 +80 +77 +74 +72 +69 +66 +62 +65 +67 +71 +73 +76 +78 +80 +83 +86 +88 +91 +93 +96 +99 +101 +104 +106 +109 +111 +114 +117 +118 +121 +124 +126 +129 +130 +133 +135 +137 +140 +142 +144 +147 +149 +151 +153 +155 +157 +159 +161 +164 +166 +167 +169 +170 +172 +174 +175 +176 +178 +180 +181 +182 +183 +184 +185 +185 +186 +186 +186 +187 +187 +187 +188 +187 +187 +186 +186 +185 +185 +184 +183 +181 +180 +180 +178 +176 +176 +174 +172 +170 +169 +167 +165 +163 +161 +160 +158 +156 +154 +152 +149 +147 +145 +142 +140 +138 +136 +133 +131 +128 +126 +124 +121 +119 +116 +114 +111 +109 +106 +104 +102 +98 +96 +94 +91 +89 +86 +84 +81 +78 +75 +73 +70 +68 +65 +61 +64 +67 +69 +72 +75 +77 +80 +83 +85 +88 +90 +92 +95 +97 +100 +103 +105 +108 +110 +112 +115 +118 +120 +122 +125 +127 +129 +132 +134 +136 +139 +140 +142 +145 +147 +149 +151 +153 +156 +157 +159 +161 +163 +164 +166 +168 +170 +172 +173 +174 +175 +176 +178 +179 +180 +181 +182 +182 +184 +183 +184 +184 +185 +185 +184 +184 +184 +184 +184 +182 +182 +182 +180 +179 +178 +177 +176 +174 +173 +171 +170 +168 +167 +165 +163 +161 +159 +157 +156 +153 +152 +149 +147 +145 +142 +140 +138 +136 +134 +132 +129 +127 +124 +122 +120 +117 +115 +113 +110 +108 +105 +103 +100 +98 +95 +92 +90 +88 +85 +82 +80 +77 +75 +72 +69 +66 +64 +61 +63 +66 +69 +71 +74 +76 +79 +81 +83 +86 +89 +91 +93 +96 +99 +101 +104 +106 +108 +111 +114 +116 +119 +121 +123 +125 +128 +130 +132 +135 +137 +139 +141 +144 +145 +147 +149 +151 +153 +156 +157 +159 +161 +163 +164 +166 +168 +169 +171 +171 +173 +175 +175 +177 +178 +179 +179 +179 +181 +181 +181 +181 +182 +182 +182 +181 +181 +181 +180 +180 +179 +179 +177 +177 +175 +174 +173 +171 +170 +169 +167 +165 +165 +163 +161 +159 +157 +155 +154 +151 +150 +147 +145 +143 +141 +139 +137 +134 +132 +130 +127 +125 +123 +121 +118 +116 +114 +111 +108 +106 +104 +101 +99 +96 +93 +91 +89 +87 +84 +81 +79 +76 +73 +71 +69 +65 +63 +59 +62 +65 +67 +70 +73 +74 +77 +80 +82 +85 +87 +90 +93 +95 +98 +99 +103 +105 +107 +110 +112 +114 +117 +119 +121 +123 +125 +128 +130 +132 +135 +137 +139 +141 +143 +146 +148 +149 +151 +154 +155 +157 +158 +160 +162 +163 +165 +166 +168 +169 +171 +172 +173 +174 +175 +175 +176 +177 +178 +178 +179 +179 +179 +179 +179 +179 +178 +178 +178 +177 +177 +176 +175 +174 +173 +171 +170 +169 +168 +166 +165 +164 +162 +161 +159 +157 +155 +153 +152 +149 +147 +145 +143 +141 +139 +137 +135 +133 +131 +128 +126 +124 +122 +119 +117 +114 +112 +110 +107 +105 +102 +100 +98 +95 +93 +90 +87 +84 +82 +80 +78 +75 +72 +70 +67 +65 +62 +59 +61 +63 +66 +68 +71 +73 +76 +79 +81 +83 +86 +88 +91 +93 +96 +99 +101 +103 +106 +108 +110 +113 +116 +117 +120 +122 +124 +127 +129 +131 +133 +135 +137 +139 +141 +143 +146 +147 +149 +151 +153 +155 +156 +158 +160 +161 +163 +164 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +175 +176 +175 +176 +176 +176 +176 +176 +176 +176 +175 +174 +174 +173 +172 +172 +170 +169 +168 +167 +166 +164 +163 +161 +159 +158 +156 +155 +153 +151 +149 +147 +146 +143 +142 +139 +137 +136 +133 +131 +129 +126 +124 +122 +120 +117 +115 +113 +111 +108 +105 +104 +100 +99 +96 +94 +91 +89 +87 +84 +81 +79 +76 +74 +71 +68 +66 +64 +61 +57 +60 +62 +65 +67 +70 +73 +75 +78 +80 +82 +85 +87 +89 +92 +94 +97 +99 +102 +104 +107 +109 +111 +113 +116 +118 +121 +123 +124 +127 +129 +131 +133 +135 +138 +140 +141 +144 +146 +147 +149 +151 +153 +154 +156 +157 +159 +161 +162 +163 +164 +165 +166 +168 +169 +170 +170 +171 +171 +172 +172 +172 +173 +173 +173 +173 +173 +173 +172 +172 +171 +171 +170 +169 +169 +167 +166 +165 +165 +163 +162 +161 +159 +157 +156 +154 +152 +151 +149 +147 +145 +143 +141 +139 +137 +136 +133 +131 +129 +127 +124 +122 +121 +118 +116 +114 +111 +108 +106 +104 +101 +100 +97 +94 +92 +90 +88 +84 +82 +80 +77 +74 +72 +70 +67 +64 +62 +60 +56 +59 +61 +63 +66 +69 +71 +74 +76 +79 +81 +83 +86 +89 +91 +93 +96 +98 +100 +102 +105 +107 +110 +112 +114 +116 +119 +121 +123 +125 +128 +130 +131 +133 +136 +138 +139 +141 +143 +145 +147 +148 +150 +151 +154 +154 +156 +158 +159 +160 +162 +163 +164 +165 +166 +167 +168 +168 +169 +170 +170 +170 +170 +170 +171 +171 +170 +170 +170 +169 +169 +168 +167 +167 +166 +165 +164 +163 +161 +160 +159 +158 +156 +155 +154 +152 +151 +149 +147 +145 +143 +142 +140 +138 +135 +133 +131 +129 +127 +125 +123 +121 +118 +116 +114 +112 +110 +107 +105 +102 +100 +98 +96 +93 +90 +88 +86 +83 +81 +79 +76 +74 +71 +68 +66 +63 +61 +59 +54 +57 +60 +62 +65 +67 +69 +73 +75 +77 +80 +82 +84 +86 +90 +92 +94 +97 +98 +101 +103 +105 +108 +110 +112 +114 +117 +119 +121 +124 +125 +127 +129 +131 +134 +136 +137 +139 +142 +142 +144 +146 +148 +150 +151 +153 +154 +156 +157 +158 +159 +161 +162 +162 +163 +164 +165 +165 +166 +167 +167 +167 +168 +168 +168 +168 +168 +167 +167 +166 +166 +166 +165 +164 +163 +162 +161 +160 +159 +158 +157 +155 +154 +152 +152 +150 +148 +146 +144 +143 +141 +139 +137 +135 +134 +132 +130 +127 +125 +123 +121 +119 +116 +115 +113 +110 +108 +106 +103 +101 +99 +97 +94 +92 +89 +87 +84 +82 +80 +77 +74 +72 +69 +67 +65 +62 +59 +57 +53 +56 +59 +61 +64 +66 +68 +70 +73 +75 +78 +80 +83 +85 +88 +90 +92 +95 +97 +99 +102 +104 +107 +108 +110 +113 +115 +117 +119 +122 +124 +125 +127 +130 +132 +133 +135 +137 +139 +140 +142 +144 +146 +147 +149 +151 +152 +153 +154 +156 +157 +158 +159 +159 +160 +162 +162 +163 +163 +163 +164 +164 +165 +164 +165 +165 +165 +165 +164 +164 +163 +163 +162 +162 +160 +160 +159 +158 +157 +156 +155 +153 +152 +150 +149 +147 +145 +144 +142 +141 +139 +137 +135 +133 +131 +130 +128 +125 +123 +122 +119 +118 +115 +113 +111 +108 +106 +104 +101 +99 +97 +95 +92 +90 +88 +85 +83 +81 +78 +76 +73 +71 +68 +66 +63 +61 +59 +56 +52 +55 +57 +60 +62 +64 +67 +69 +72 +74 +76 +79 +81 +84 +86 +89 +91 +94 +96 +97 +100 +103 +105 +107 +109 +111 +113 +115 +117 +119 +121 +124 +126 +127 +129 +131 +133 +134 +136 +139 +140 +142 +143 +144 +147 +148 +149 +151 +151 +153 +154 +155 +156 +157 +158 +159 +159 +160 +161 +161 +161 +162 +162 +162 +162 +162 +161 +161 +161 +161 +161 +160 +159 +159 +158 +157 +156 +155 +154 +153 +152 +150 +150 +148 +147 +145 +144 +141 +140 +138 +136 +135 +134 +132 +129 +127 +125 +124 +121 +120 +117 +115 +113 +111 +109 +107 +104 +102 +100 +98 +96 +93 +91 +88 +87 +84 +82 +79 +76 +74 +71 +70 +67 +64 +62 +60 +57 +55 +51 +54 +56 +58 +61 +63 +66 +68 +70 +73 +75 +78 +80 +82 +84 +87 +89 +91 +94 +96 +99 +100 +102 +104 +107 +110 +111 +113 +116 +117 +120 +122 +123 +125 +128 +129 +131 +133 +134 +136 +137 +139 +140 +143 +144 +145 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +157 +158 +158 +159 +158 +159 +159 +159 +159 +159 +159 +158 +158 +158 +157 +156 +156 +155 +155 +153 +153 +152 +150 +149 +148 +147 +145 +144 +142 +140 +140 +138 +136 +135 +133 +131 +129 +127 +125 +123 +121 +119 +118 +115 +113 +111 +109 +107 +104 +102 +101 +98 +96 +94 +92 +89 +87 +84 +83 +80 +77 +76 +73 +70 +68 +66 +64 +61 +58 +56 +53 +49 +52 +55 +57 +60 +62 +64 +67 +69 +71 +73 +76 +79 +81 +83 +86 +88 +90 +92 +95 +96 +98 +101 +104 +105 +108 +110 +112 +113 +115 +118 +119 +121 +123 +125 +127 +128 +131 +132 +133 +135 +137 +138 +140 +142 +143 +144 +145 +147 +148 +149 +150 +151 +151 +152 +154 +153 +154 +155 +156 +155 +156 +157 +157 +156 +156 +156 +156 +156 +155 +155 +154 +154 +153 +152 +152 +150 +150 +149 +147 +146 +146 +144 +143 +142 +141 +139 +137 +135 +134 +132 +130 +129 +127 +125 +123 +121 +120 +117 +116 +113 +112 +109 +108 +105 +103 +101 +98 +97 +94 +92 +90 +88 +86 +83 +81 +78 +76 +73 +71 +69 +67 +64 +62 +59 +57 +54 +51 +48 +50 +53 +55 +58 +61 +63 +65 +68 +70 +72 +75 +77 +79 +81 +84 +85 +88 +91 +93 +95 +97 +100 +101 +103 +106 +107 +110 +112 +114 +116 +117 +120 +121 +123 +124 +127 +128 +130 +131 +133 +135 +136 +137 +139 +141 +142 +143 +144 +145 +146 +147 +148 +149 +149 +150 +151 +152 +152 +153 +153 +153 +154 +153 +153 +153 +153 +153 +153 +153 +152 +152 +151 +150 +150 +149 +149 +148 +146 +145 +144 +143 +141 +140 +139 +138 +136 +135 +133 +131 +130 +129 +127 +125 +123 +121 +119 +118 +115 +114 +112 +109 +108 +105 +104 +101 +99 +97 +95 +93 +91 +88 +86 +84 +81 +79 +77 +74 +73 +70 +68 +66 +63 +60 +58 +56 +53 +51 +47 +50 +51 +54 +56 +58 +61 +63 +65 +69 +71 +73 +75 +78 +80 +82 +84 +86 +89 +91 +93 +95 +97 +100 +102 +103 +105 +108 +109 +112 +114 +115 +117 +119 +120 +122 +124 +126 +128 +129 +130 +132 +134 +135 +136 +138 +139 +140 +141 +143 +143 +144 +145 +146 +147 +148 +148 +148 +150 +150 +150 +150 +151 +151 +151 +151 +150 +150 +151 +149 +150 +149 +148 +148 +147 +147 +146 +145 +144 +143 +141 +140 +139 +138 +137 +135 +133 +132 +130 +130 +127 +126 +124 +122 +121 +119 +117 +115 +114 +112 +109 +108 +105 +104 +101 +99 +97 +95 +93 +90 +89 +87 +84 +82 +79 +78 +75 +73 +71 +68 +66 +64 +61 +59 +56 +54 +52 +49 +45 +48 +50 +53 +55 +57 +60 +62 +64 +67 +69 +71 +73 +76 +79 +80 +82 +85 +87 +89 +91 +94 +95 +97 +100 +102 +104 +106 +107 +109 +111 +113 +115 +117 +119 +120 +122 +124 +125 +127 +129 +130 +131 +133 +134 +136 +137 +138 +139 +140 +141 +142 +142 +144 +144 +145 +146 +146 +147 +147 +147 +148 +148 +148 +148 +148 +148 +148 +147 +147 +147 +146 +145 +145 +144 +144 +143 +142 +141 +140 +139 +138 +137 +135 +134 +133 +132 +130 +128 +127 +125 +124 +122 +120 +119 +117 +115 +114 +111 +109 +108 +105 +104 +101 +100 +98 +95 +94 +92 +89 +87 +85 +82 +80 +78 +76 +73 +71 +69 +67 +64 +62 +60 +57 +55 +52 +50 +47 +44 +46 +49 +51 +54 +56 +58 +61 +63 +65 +67 +70 +72 +74 +76 +78 +81 +83 +85 +87 +89 +92 +93 +96 +98 +99 +101 +103 +106 +107 +110 +111 +113 +115 +116 +118 +120 +121 +123 +125 +126 +128 +129 +130 +131 +133 +134 +135 +136 +137 +138 +139 +140 +141 +141 +142 +143 +143 +143 +144 +145 +145 +145 +146 +145 +145 +145 +145 +145 +144 +144 +144 +143 +142 +141 +141 +140 +140 +138 +138 +137 +135 +134 +133 +131 +130 +129 +128 +126 +124 +123 +121 +119 +118 +117 +115 +113 +111 +109 +107 +105 +104 +102 +99 +97 +96 +93 +91 +90 +87 +85 +83 +81 +78 +77 +74 +72 +70 +67 +65 +63 +61 +58 +56 +54 +51 +48 +47 +43 +45 +47 +49 +52 +54 +56 +59 +61 +64 +66 +68 +70 +73 +74 +77 +79 +82 +84 +85 +88 +90 +92 +94 +96 +97 +100 +102 +103 +105 +107 +109 +111 +113 +114 +116 +117 +119 +121 +123 +124 +125 +126 +127 +129 +130 +131 +133 +134 +134 +135 +137 +138 +138 +138 +140 +140 +141 +141 +142 +142 +142 +142 +142 +142 +142 +143 +142 +142 +142 +141 +141 +141 +139 +139 +138 +137 +137 +135 +135 +134 +133 +132 +130 +129 +127 +127 +125 +124 +122 +120 +119 +118 +116 +114 +113 +111 +109 +107 +105 +104 +102 +100 +98 +96 +93 +91 +90 +87 +85 +84 +81 +79 +77 +74 +72 +70 +68 +66 +63 +61 +59 +56 +54 +52 +49 +47 +45 +41 +44 +45 +48 +50 +52 +55 +57 +59 +61 +64 +66 +68 +71 +72 +75 +78 +79 +82 +84 +86 +88 +90 +91 +93 +96 +98 +99 +102 +103 +105 +106 +108 +111 +112 +113 +115 +117 +119 +120 +121 +123 +124 +126 +127 +127 +129 +130 +131 +132 +133 +134 +135 +135 +136 +136 +137 +137 +139 +138 +139 +139 +139 +139 +139 +139 +139 +140 +139 +139 +139 +138 +137 +137 +136 +135 +135 +134 +133 +132 +131 +130 +129 +128 +127 +125 +124 +123 +121 +120 +118 +116 +115 +113 +111 +110 +108 +107 +105 +103 +102 +99 +97 +95 +93 +91 +90 +87 +86 +83 +81 +80 +77 +75 +73 +70 +68 +66 +64 +62 +60 +58 +55 +52 +51 +48 +46 +43 +39 +42 +44 +46 +49 +50 +53 +56 +58 +60 +62 +65 +67 +69 +71 +74 +76 +78 +79 +81 +84 +86 +87 +90 +91 +94 +96 +97 +99 +101 +103 +105 +106 +108 +109 +111 +112 +115 +116 +117 +118 +120 +122 +122 +124 +125 +127 +128 +129 +129 +130 +132 +132 +133 +133 +134 +135 +135 +136 +136 +136 +136 +136 +137 +137 +137 +136 +137 +136 +136 +136 +135 +135 +134 +133 +132 +132 +131 +131 +129 +128 +127 +127 +125 +124 +123 +121 +120 +119 +117 +116 +114 +112 +112 +110 +107 +107 +105 +103 +101 +99 +98 +96 +93 +91 +90 +87 +86 +84 +82 +79 +77 +75 +73 +71 +69 +67 +64 +62 +60 +58 +55 +54 +51 +49 +46 +44 +41 +38 +40 +43 +45 +47 +49 +51 +54 +56 +58 +61 +62 +65 +67 +69 +72 +73 +76 +77 +80 +81 +83 +85 +88 +90 +92 +94 +96 +97 +99 +101 +102 +104 +106 +107 +109 +110 +112 +114 +115 +116 +118 +119 +120 +121 +122 +124 +125 +126 +127 +127 +128 +129 +130 +131 +131 +132 +132 +132 +133 +133 +134 +134 +134 +134 +134 +134 +133 +134 +133 +132 +133 +131 +132 +131 +130 +129 +128 +128 +126 +126 +125 +124 +122 +121 +120 +119 +118 +116 +115 +114 +112 +111 +109 +107 +106 +104 +102 +101 +98 +97 +95 +93 +91 +90 +87 +86 +84 +82 +80 +78 +75 +73 +72 +69 +67 +65 +63 +60 +59 +56 +53 +51 +49 +47 +45 +43 +40 +36 +39 +41 +44 +45 +48 +50 +52 +55 +57 +59 +61 +63 +65 +67 +69 +71 +74 +76 +78 +80 +81 +84 +86 +87 +89 +91 +93 +95 +97 +99 +100 +101 +103 +105 +106 +109 +109 +111 +113 +114 +115 +117 +117 +119 +120 +121 +122 +123 +124 +125 +126 +126 +127 +128 +128 +129 +130 +130 +130 +130 +131 +131 +131 +131 +131 +131 +131 +131 +130 +130 +129 +129 +128 +128 +127 +126 +126 +125 +124 +124 +122 +121 +120 +119 +117 +116 +116 +113 +113 +111 +109 +108 +107 +105 +103 +102 +100 +99 +97 +94 +93 +91 +89 +88 +85 +83 +81 +80 +78 +76 +73 +72 +70 +67 +65 +63 +61 +59 +56 +54 +52 +50 +48 +46 +43 +41 +38 +34 +37 +39 +41 +44 +46 +48 +50 +53 +55 +57 +59 +61 +63 +66 +68 +70 +71 +73 +76 +77 +79 +82 +84 +85 +87 +89 +91 +93 +94 +96 +98 +100 +101 +103 +104 +106 +107 +108 +110 +112 +112 +114 +115 +116 +118 +119 +119 +121 +121 +122 +123 +124 +125 +125 +126 +127 +127 +127 +127 +128 +128 +128 +128 +129 +128 +128 +128 +128 +128 +127 +127 +126 +126 +125 +124 +124 +123 +122 +122 +120 +120 +118 +118 +116 +115 +114 +113 +111 +110 +108 +107 +106 +104 +103 +101 +100 +97 +96 +94 +92 +91 +89 +87 +86 +84 +82 +80 +78 +76 +73 +72 +70 +68 +66 +63 +61 +59 +56 +55 +53 +51 +48 +46 +44 +41 +40 +37 +33 +35 +37 +39 +42 +44 +46 +49 +51 +53 +55 +57 +59 +62 +63 +66 +67 +69 +71 +74 +76 +78 +80 +81 +84 +86 +87 +89 +90 +92 +94 +95 +97 +98 +100 +102 +104 +104 +106 +108 +109 +110 +111 +112 +114 +114 +116 +116 +118 +118 +120 +121 +121 +122 +123 +123 +123 +124 +124 +125 +125 +125 +126 +126 +125 +126 +125 +125 +125 +125 +125 +124 +123 +123 +123 +122 +121 +120 +120 +119 +118 +117 +116 +115 +113 +112 +111 +110 +109 +108 +107 +105 +103 +102 +100 +99 +97 +95 +94 +93 +90 +88 +87 +85 +83 +82 +80 +77 +76 +73 +72 +70 +68 +66 +63 +61 +59 +58 +56 +53 +51 +49 +47 +44 +42 +40 +37 +36 +31 +33 +36 +38 +41 +42 +45 +47 +49 +51 +53 +55 +57 +60 +61 +64 +65 +68 +70 +71 +74 +76 +77 +80 +81 +83 +85 +87 +89 +90 +92 +93 +95 +96 +98 +99 +101 +103 +104 +105 +107 +108 +108 +110 +111 +112 +113 +114 +115 +116 +117 +118 +118 +119 +120 +120 +121 +121 +122 +122 +122 +123 +122 +123 +122 +122 +123 +122 +123 +122 +122 +121 +120 +120 +120 +119 +119 +118 +117 +116 +115 +114 +113 +112 +111 +110 +109 +108 +106 +105 +104 +102 +101 +99 +98 +97 +95 +93 +92 +90 +88 +86 +84 +83 +81 +79 +77 +76 +73 +72 +70 +68 +66 +64 +62 +60 +58 +56 +53 +52 +49 +47 +44 +42 +40 +38 +36 +34 +29 +32 +34 +36 +38 +41 +43 +45 +47 +50 +52 +54 +56 +58 +60 +62 +64 +66 +68 +70 +71 +74 +75 +77 +79 +81 +83 +85 +86 +88 +89 +91 +92 +94 +95 +97 +99 +100 +101 +102 +104 +105 +106 +107 +108 +110 +111 +111 +113 +113 +114 +115 +116 +117 +117 +118 +118 +118 +119 +119 +119 +120 +120 +120 +120 +120 +120 +119 +120 +119 +119 +118 +118 +117 +117 +116 +116 +115 +114 +113 +113 +111 +110 +109 +108 +108 +107 +105 +104 +102 +101 +99 +98 +97 +95 +94 +92 +91 +89 +87 +86 +84 +83 +80 +79 +77 +76 +74 +72 +69 +68 +66 +64 +61 +60 +57 +55 +53 +51 +49 +47 +45 +43 +41 +39 +37 +34 +32 +28 +31 +33 +35 +37 +39 +41 +43 +46 +47 +50 +51 +53 +56 +58 +60 +61 +64 +65 +67 +70 +72 +73 +75 +77 +79 +80 +82 +83 +85 +87 +89 +90 +92 +93 +95 +96 +97 +99 +100 +102 +102 +103 +105 +106 +106 +108 +109 +110 +111 +111 +112 +113 +113 +114 +115 +115 +116 +116 +117 +116 +117 +117 +117 +116 +117 +117 +117 +117 +116 +115 +116 +115 +114 +114 +113 +113 +112 +111 +111 +110 +109 +108 +107 +106 +104 +104 +102 +101 +100 +98 +98 +96 +94 +93 +92 +90 +89 +87 +86 +84 +82 +81 +78 +77 +75 +73 +72 +69 +68 +66 +63 +61 +60 +57 +56 +54 +51 +50 +48 +46 +43 +41 +39 +37 +35 +32 +30 +27 +29 +31 +33 +35 +37 +39 +41 +43 +45 +48 +50 +52 +54 +56 +58 +59 +62 +64 +65 +68 +69 +71 +73 +74 +77 +78 +80 +81 +83 +84 +86 +88 +90 +90 +92 +94 +95 +96 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +110 +111 +112 +112 +112 +113 +113 +113 +113 +114 +114 +114 +114 +114 +114 +114 +113 +113 +114 +113 +112 +112 +111 +110 +110 +110 +109 +108 +107 +106 +105 +104 +104 +102 +101 +100 +99 +98 +96 +95 +93 +92 +91 +89 +87 +86 +85 +83 +81 +80 +78 +76 +74 +72 +71 +69 +68 +66 +63 +62 +60 +57 +56 +53 +52 +50 +47 +46 +44 +41 +39 +37 +35 +33 +31 +28 +25 +27 +29 +31 +33 +36 +37 +40 +41 +43 +46 +48 +50 +52 +54 +56 +58 +60 +61 +63 +65 +68 +69 +71 +72 +74 +75 +78 +79 +81 +82 +84 +85 +87 +88 +90 +91 +92 +93 +95 +96 +98 +98 +100 +101 +101 +102 +104 +105 +106 +106 +107 +108 +108 +109 +110 +110 +110 +110 +111 +111 +111 +111 +111 +112 +111 +111 +111 +111 +111 +110 +110 +109 +109 +109 +108 +107 +106 +106 +105 +105 +103 +103 +101 +101 +100 +98 +97 +96 +95 +94 +92 +91 +90 +89 +87 +85 +84 +82 +81 +79 +77 +76 +74 +72 +71 +69 +67 +66 +63 +61 +60 +58 +55 +53 +52 +49 +47 +45 +43 +42 +39 +38 +35 +34 +31 +29 +27 +22 +25 +27 +29 +31 +34 +35 +37 +40 +42 +44 +46 +48 +50 +52 +54 +56 +58 +59 +61 +63 +64 +66 +68 +71 +72 +74 +75 +77 +79 +80 +81 +83 +84 +85 +87 +89 +90 +91 +92 +93 +95 +96 +97 +98 +99 +100 +101 +102 +102 +103 +104 +105 +105 +105 +106 +107 +108 +107 +108 +108 +108 +109 +108 +108 +108 +108 +109 +108 +108 +108 +107 +107 +107 +105 +105 +105 +104 +103 +102 +102 +101 +100 +99 +98 +97 +96 +95 +93 +92 +91 +90 +88 +87 +86 +84 +83 +82 +80 +78 +77 +75 +74 +72 +70 +69 +66 +65 +63 +61 +60 +57 +56 +54 +51 +49 +48 +46 +43 +41 +40 +38 +35 +33 +31 +29 +27 +25 +21 +23 +25 +27 +29 +32 +33 +36 +38 +40 +42 +44 +46 +48 +50 +52 +54 +55 +57 +59 +61 +63 +64 +66 +68 +70 +71 +73 +74 +76 +77 +80 +81 +82 +84 +85 +86 +87 +89 +90 +92 +92 +93 +94 +95 +96 +97 +98 +99 +99 +100 +102 +102 +103 +103 +104 +104 +104 +105 +105 +105 +105 +105 +106 +106 +105 +105 +105 +106 +105 +105 +105 +104 +104 +103 +102 +102 +101 +101 +100 +99 +98 +97 +97 +95 +94 +94 +93 +91 +89 +88 +88 +86 +84 +83 +82 +80 +79 +77 +76 +75 +72 +71 +69 +68 +66 +65 +62 +61 +59 +58 +56 +54 +51 +50 +48 +46 +44 +42 +40 +38 +36 +34 +31 +30 +27 +25 +23 +19 +22 +24 +26 +27 +30 +32 +34 +36 +38 +39 +42 +43 +46 +47 +50 +51 +53 +55 +57 +58 +60 +63 +64 +66 +67 +69 +70 +73 +74 +75 +76 +78 +80 +81 +83 +83 +85 +86 +87 +89 +90 +91 +92 +93 +94 +95 +95 +96 +97 +98 +98 +99 +100 +100 +101 +102 +101 +102 +103 +103 +103 +102 +103 +103 +102 +102 +103 +102 +103 +102 +102 +101 +101 +100 +100 +100 +99 +98 +98 +97 +96 +94 +93 +93 +92 +91 +90 +89 +87 +87 +85 +83 +83 +81 +80 +78 +77 +75 +74 +72 +71 +69 +68 +65 +64 +63 +61 +59 +57 +55 +54 +51 +50 +47 +46 +44 +42 +40 +38 +36 +34 +32 +30 +28 +25 +24 +22 +17 +19 +21 +23 +25 +28 +30 +31 +34 +36 +37 +40 +42 +43 +46 +47 +50 +51 +53 +54 +57 +58 +60 +62 +64 +65 +67 +68 +70 +72 +73 +74 +76 +77 +79 +80 +81 +83 +83 +85 +86 +87 +88 +89 +91 +91 +92 +92 +93 +95 +95 +96 +96 +97 +98 +98 +99 +99 +99 +99 +100 +100 +100 +100 +100 +100 +100 +100 +100 +99 +99 +98 +99 +98 +97 +97 +97 +96 +95 +94 +94 +92 +92 +91 +90 +89 +89 +87 +86 +84 +84 +82 +81 +80 +79 +77 +75 +74 +73 +71 +70 +68 +67 +65 +63 +62 +60 +59 +56 +55 +53 +51 +49 +47 +46 +44 +42 +40 +38 +36 +34 +32 +29 +28 +25 +24 +21 +19 +16 +18 +19 +22 +24 +26 +28 +30 +31 +34 +36 +38 +40 +42 +44 +45 +47 +49 +50 +52 +54 +56 +57 +59 +61 +62 +65 +66 +67 +69 +71 +72 +73 +75 +76 +78 +79 +80 +81 +83 +83 +85 +86 +86 +87 +88 +89 +90 +91 +91 +92 +93 +94 +95 +95 +95 +95 +96 +96 +97 +97 +97 +97 +97 +97 +97 +98 +97 +97 +97 +96 +96 +96 +95 +95 +94 +94 +93 +92 +92 +91 +90 +89 +88 +87 +86 +86 +84 +83 +82 +81 +80 +78 +77 +76 +75 +73 +72 +71 +69 +68 +66 +64 +63 +61 +59 +58 +56 +54 +53 +50 +49 +47 +45 +44 +42 +40 +38 +35 +33 +32 +29 +28 +26 +24 +22 +19 +17 +13 +16 +18 +19 +22 +24 +26 +28 +30 +31 +34 +36 +38 +40 +42 +43 +45 +47 +48 +50 +52 +54 +55 +57 +59 +60 +62 +63 +65 +67 +68 +69 +71 +72 +74 +75 +76 +77 +79 +80 +81 +82 +82 +84 +85 +86 +87 +88 +88 +89 +89 +91 +91 +92 +92 +93 +93 +94 +93 +94 +94 +94 +94 +94 +95 +95 +95 +95 +94 +94 +94 +93 +93 +93 +92 +92 +91 +90 +89 +89 +88 +88 +87 +85 +84 +84 +82 +82 +80 +79 +79 +78 +76 +75 +73 +72 +70 +69 +68 +66 +65 +63 +62 +61 +59 +58 +56 +54 +52 +50 +48 +47 +45 +44 +41 +39 +37 +35 +34 +31 +30 +28 +26 +24 +22 +20 +18 +16 +12 +14 +16 +18 +20 +22 +24 +26 +28 +30 +32 +33 +36 +38 +39 +41 +43 +45 +46 +48 +50 +52 +54 +55 +57 +58 +59 +61 +63 +64 +65 +67 +68 +69 +71 +72 +74 +75 +76 +77 +78 +79 +80 +82 +82 +83 +84 +84 +86 +87 +87 +88 +88 +89 +89 +90 +90 +90 +90 +91 +91 +91 +92 +92 +92 +92 +91 +91 +92 +91 +91 +91 +90 +89 +89 +88 +88 +87 +87 +86 +85 +85 +84 +84 +82 +81 +80 +79 +78 +77 +76 +75 +74 +72 +71 +70 +68 +67 +66 +64 +63 +61 +60 +58 +56 +55 +53 +52 +50 +48 +46 +45 +43 +41 +39 +38 +36 +34 +32 +30 +28 +26 +24 +22 +20 +18 +15 +14 +9 +12 +14 +16 +18 +20 +22 +24 +25 +28 +30 +32 +34 +35 +37 +39 +41 +42 +44 +46 +48 +49 +50 +53 +54 +56 +58 +59 +60 +62 +63 +65 +66 +67 +69 +70 +71 +72 +73 +74 +75 +76 +78 +78 +80 +81 +81 +82 +83 +83 +85 +85 +86 +86 +86 +86 +88 +88 +87 +88 +89 +89 +88 +89 +89 +89 +88 +89 +88 +88 +88 +88 +88 +87 +87 +86 +85 +85 +84 +84 +83 +82 +81 +81 +80 +79 +78 +77 +76 +75 +73 +72 +71 +70 +68 +67 +66 +64 +63 +62 +60 +59 +57 +56 +54 +53 +51 +49 +48 +46 +45 +43 +41 +39 +37 +35 +34 +31 +30 +28 +26 +24 +22 +20 +18 +16 +14 +12 +8 +10 +12 +14 +16 +18 +20 +22 +24 +25 +27 +29 +32 +33 +35 +37 +38 +40 +41 +44 +45 +48 +49 +50 +52 +53 +55 +56 +57 +60 +61 +62 +63 +65 +66 +67 +68 +69 +71 +72 +73 +74 +75 +76 +76 +78 +79 +79 +80 +80 +81 +82 +83 +83 +83 +84 +85 +85 +85 +86 +86 +86 +86 +86 +86 +86 +86 +86 +85 +85 +85 +85 +84 +84 +83 +83 +82 +82 +81 +81 +80 +79 +79 +78 +77 +75 +75 +74 +73 +72 +71 +69 +69 +67 +66 +65 +63 +62 +61 +59 +58 +57 +55 +54 +52 +50 +48 +47 +45 +44 +42 +40 +38 +36 +35 +33 +31 +30 +27 +26 +23 +22 +20 +18 +16 +14 +12 +10 +5 +8 +10 +12 +14 +16 +18 +20 +22 +24 +25 +27 +29 +31 +33 +34 +36 +38 +40 +42 +43 +45 +47 +48 +49 +52 +52 +54 +55 +56 +58 +60 +60 +62 +63 +65 +66 +67 +68 +69 +71 +72 +72 +73 +74 +75 +76 +77 +77 +78 +78 +79 +80 +80 +81 +82 +82 +82 +82 +82 +83 +83 +83 +83 +84 +83 +83 +82 +83 +82 +82 +82 +81 +81 +80 +81 +80 +80 +79 +78 +77 +77 +76 +75 +74 +74 +72 +72 +71 +69 +68 +67 +66 +64 +63 +62 +60 +60 +58 +57 +55 +54 +53 +51 +50 +48 +47 +45 +43 +41 +39 +38 +36 +34 +33 +31 +29 +27 +25 +23 +22 +20 +18 +16 +14 +12 +10 +8 +4 +6 +8 +10 +12 +14 +16 +17 +19 +21 +24 +25 +27 +29 +30 +33 +34 +36 +38 +39 +41 +43 +44 +46 +47 +49 +50 +52 +53 +55 +56 +57 +58 +60 +61 +62 +63 +65 +65 +67 +67 +68 +70 +71 +71 +72 +73 +74 +75 +75 +76 +76 +77 +77 +78 +79 +79 +79 +79 +80 +80 +80 +81 +81 +81 +80 +81 +80 +80 +80 +79 +79 +79 +79 +78 +78 +77 +77 +76 +75 +75 +74 +73 +72 +71 +71 +70 +69 +68 +67 +66 +65 +64 +62 +61 +60 +59 +57 +56 +54 +53 +52 +50 +48 +47 +46 +44 +43 +41 +39 +37 +36 +34 +33 +30 +29 +27 +26 +23 +21 +20 +18 +16 +13 +11 +10 +8 +6 +2 +4 +6 +8 +10 +11 +14 +16 +18 +19 +21 +23 +25 +27 +29 +30 +32 +33 +35 +37 +39 +40 +42 +43 +45 +46 +48 +49 +51 +52 +53 +55 +56 +57 +58 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +69 +70 +71 +71 +72 +73 +74 +74 +74 +76 +75 +77 +77 +77 +77 +77 +78 +77 +77 +78 +77 +77 +77 +77 +77 +77 +77 +77 +76 +75 +75 +74 +74 +73 +73 +72 +71 +71 +70 +69 +68 +67 +66 +65 +64 +63 +62 +60 +60 +59 +57 +56 +54 +54 +52 +50 +49 +48 +46 +44 +43 +42 +40 +38 +37 +35 +33 +32 +30 +28 +27 +25 +23 +22 +20 +18 +16 +14 +11 +10 +8 +6 +4 diff --git a/extra/images/testing/pgm/radial.binary.fig b/extra/images/testing/pgm/radial.binary.fig new file mode 100644 index 0000000000..6e52311b94 Binary files /dev/null and b/extra/images/testing/pgm/radial.binary.fig differ diff --git a/extra/images/testing/pgm/radial.binary.pgm b/extra/images/testing/pgm/radial.binary.pgm new file mode 100644 index 0000000000..598ee59e2d Binary files /dev/null and b/extra/images/testing/pgm/radial.binary.pgm differ