assocs classes combinators combinators.short-circuit
compiler.units effects grouping kernel parser sequences
splitting words fry locals lexer namespaces summary math
-vocabs.parser ;
+vocabs.parser words.constant ;
IN: alien.parser
: parse-c-type-name ( name -- word )
dup "*" tail?
[ *-in-c-type-name ] when ;
-: CREATE-C-TYPE ( -- word )
- scan validate-c-type-name current-vocab create {
+: (CREATE-C-TYPE) ( word -- word )
+ validate-c-type-name current-vocab create {
[ fake-definition ]
[ set-word ]
[ reset-c-type ]
[ ]
} cleave ;
+: CREATE-C-TYPE ( -- word )
+ scan (CREATE-C-TYPE) ;
+
<PRIVATE
GENERIC: return-type-name ( type -- name )
PRIVATE>
+: define-enum-member ( word-string value -- next-value )
+ [ create-in ] dip [ define-constant ] keep 1 + ;
+
+: parse-enum-member ( word-string value -- next-value )
+ over "{" =
+ [ 2drop scan scan-object define-enum-member "}" expect ]
+ [ define-enum-member ] if ;
+
+: parse-enum-members ( counter -- )
+ scan dup ";" = not
+ [ swap parse-enum-member parse-enum-members ] [ 2drop ] if ;
+
: scan-function-name ( -- return function )
scan-c-type scan parse-pointers ;
{ $notes "This word differs from " { $link typedef } " in that it runs at parse time, to ensure correct ordering of operations when loading source files. Words defined in source files are compiled before top-level forms are run, so if a source file defines C binding words and uses " { $link typedef } ", the type alias won't be available at compile time." } ;
HELP: C-ENUM:
-{ $syntax "C-ENUM: words... ;" }
-{ $values { "words" "a sequence of word names" } }
-{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to its index in the enumeration definition. The first word pushes 0." }
+{ $syntax "C-ENUM: type/f words... ;" }
+{ $values { "type" "a name to typedef to int or f" } { "words" "a sequence of word names" } }
+{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to the rules of C enums." }
{ $notes "This word emulates a C-style " { $snippet "enum" } " in Factor. While this feature can be used for any purpose, using integer constants is discouraged unless it is for interfacing with C libraries. Factor code should use " { $link "words.symbol" } " or " { $link "singletons" } " instead." }
{ $examples
"Here is an example enumeration definition:"
- { $code "C-ENUM: red green blue ;" }
+ { $code "C-ENUM: color_t red { green 3 } blue ;" }
"It is equivalent to the following series of definitions:"
- { $code "CONSTANT: red 0" "CONSTANT: green 1" "CONSTANT: blue 2" }
+ { $code "CONSTANT: red 0" "CONSTANT: green 3" "CONSTANT: blue 4" }
} ;
HELP: C-TYPE:
scan-c-type CREATE-C-TYPE dup save-location typedef ;
SYNTAX: C-ENUM:
- ";" parse-tokens
- [ [ create-in ] dip define-constant ] each-index ;
+ scan dup "f" =
+ [ drop ]
+ [ (CREATE-C-TYPE) dup save-location int swap typedef ] if
+ 0 parse-enum-members ;
SYNTAX: C-TYPE:
void CREATE-C-TYPE typedef ;
STRUCT: cairo_user_data_key_t
{ unused int } ;
-TYPEDEF: int cairo_status_t
-C-ENUM:
+C-ENUM: cairo_status_t
CAIRO_STATUS_SUCCESS
CAIRO_STATUS_NO_MEMORY
CAIRO_STATUS_INVALID_RESTORE
cairo_pop_group_to_source ( cairo_t* cr ) ;
! Modify state
-TYPEDEF: int cairo_operator_t
-C-ENUM:
+C-ENUM: cairo_operator_t
CAIRO_OPERATOR_CLEAR
CAIRO_OPERATOR_SOURCE
FUNCTION: void
cairo_set_tolerance ( cairo_t* cr, double tolerance ) ;
-TYPEDEF: int cairo_antialias_t
-C-ENUM:
+C-ENUM: cairo_antialias_t
CAIRO_ANTIALIAS_DEFAULT
CAIRO_ANTIALIAS_NONE
CAIRO_ANTIALIAS_GRAY
FUNCTION: void
cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ;
-TYPEDEF: int cairo_fill_rule_t
-C-ENUM:
+C-ENUM: cairo_fill_rule_t
CAIRO_FILL_RULE_WINDING
CAIRO_FILL_RULE_EVEN_ODD ;
FUNCTION: void
cairo_set_line_width ( cairo_t* cr, double width ) ;
-TYPEDEF: int cairo_line_cap_t
-C-ENUM:
+C-ENUM: cairo_line_cap_t
CAIRO_LINE_CAP_BUTT
CAIRO_LINE_CAP_ROUND
CAIRO_LINE_CAP_SQUARE ;
FUNCTION: void
cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ;
-TYPEDEF: int cairo_line_join_t
-C-ENUM:
+C-ENUM: cairo_line_join_t
CAIRO_LINE_JOIN_MITER
CAIRO_LINE_JOIN_ROUND
CAIRO_LINE_JOIN_BEVEL ;
{ max_x_advance double }
{ max_y_advance double } ;
-TYPEDEF: int cairo_font_slant_t
-C-ENUM:
+C-ENUM: cairo_font_slant_t
CAIRO_FONT_SLANT_NORMAL
CAIRO_FONT_SLANT_ITALIC
CAIRO_FONT_SLANT_OBLIQUE ;
-TYPEDEF: int cairo_font_weight_t
-C-ENUM:
+C-ENUM: cairo_font_weight_t
CAIRO_FONT_WEIGHT_NORMAL
CAIRO_FONT_WEIGHT_BOLD ;
-TYPEDEF: int cairo_subpixel_order_t
-C-ENUM:
+C-ENUM: cairo_subpixel_order_t
CAIRO_SUBPIXEL_ORDER_DEFAULT
CAIRO_SUBPIXEL_ORDER_RGB
CAIRO_SUBPIXEL_ORDER_BGR
CAIRO_SUBPIXEL_ORDER_VRGB
CAIRO_SUBPIXEL_ORDER_VBGR ;
-TYPEDEF: int cairo_hint_style_t
-C-ENUM:
+C-ENUM: cairo_hint_Style_t
CAIRO_HINT_STYLE_DEFAULT
CAIRO_HINT_STYLE_NONE
CAIRO_HINT_STYLE_SLIGHT
CAIRO_HINT_STYLE_MEDIUM
CAIRO_HINT_STYLE_FULL ;
-TYPEDEF: int cairo_hint_metrics_t
-C-ENUM:
+C-ENUM: cairo_hint_metrics_t
CAIRO_HINT_METRICS_DEFAULT
CAIRO_HINT_METRICS_OFF
CAIRO_HINT_METRICS_ON ;
FUNCTION: cairo_status_t
cairo_font_face_status ( cairo_font_face_t* font_face ) ;
-TYPEDEF: int cairo_font_type_t
-C-ENUM:
+C-ENUM: cairo_font_type_t
CAIRO_FONT_TYPE_TOY
CAIRO_FONT_TYPE_FT
CAIRO_FONT_TYPE_WIN32
FUNCTION: cairo_surface_t*
cairo_get_group_target ( cairo_t* cr ) ;
-TYPEDEF: int cairo_path_data_type_t
-C-ENUM:
+C-ENUM: cairo_path_data_type_t
CAIRO_PATH_MOVE_TO
CAIRO_PATH_LINE_TO
CAIRO_PATH_CURVE_TO
opengl.gl literals ;
IN: core-graphics
-! CGImageAlphaInfo
-C-ENUM:
+C-ENUM: CGImageAlphaInfo
kCGImageAlphaNone
kCGImageAlphaPremultipliedLast
kCGImageAlphaPremultipliedFirst
--- /dev/null
+Erik Charlebois
--- /dev/null
+! 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
--- /dev/null
+! 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 ;
--- /dev/null
+Image loading for PGM image files.
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: images.testing ;
+IN: images.ppm.tests
+
+"vocab:images/testing/ppm/binary.ppm" decode-test
+"vocab:images/testing/ppm/ascii.ppm" decode-test
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors ascii combinators images images.loader io
+io.encodings.ascii io.encodings.string kernel locals make math
+math.parser prettyprint sequences ;
+IN: images.ppm
+
+SINGLETON: ppm-image
+"ppm" ppm-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 ;
+
+:: read-ppm ( -- image )
+ read-token :> type
+ read-number :> width
+ read-number :> height
+ read-number :> max
+ width height 3 * * :> npixels
+ type {
+ { "P3" [ [ 0 npixels read-numbers ] B{ } make ] }
+ { "P6" [ npixels read ] }
+ } case :> data
+
+ image new
+ RGB >>component-order
+ { width height } >>dim
+ f >>upside-down?
+ data >>bitmap
+ ubyte-components >>component-type ;
+
+M: ppm-image stream>image
+ drop [ read-ppm ] with-input-stream ;
+
+M: ppm-image image>stream
+ drop {
+ [ drop "P6\n" ascii encode write ]
+ [ dim>> first number>string " " append ascii encode write ]
+ [ dim>> second number>string "\n" append ascii encode write ]
+ [ drop "255\n" ascii encode write ]
+ [ bitmap>> write ]
+ } cleave ;
--- /dev/null
+Image loading for PPM image files.
LIBRARY: pango
-TYPEDEF: int PangoStyle
-C-ENUM:
+C-ENUM: PangoStyle
PANGO_STYLE_NORMAL
PANGO_STYLE_OBLIQUE
PANGO_STYLE_ITALIC ;
CONSTANT: TokenSandBoxInert 15
! } TOKEN_INFORMATION_CLASS;
-TYPEDEF: DWORD ACCESS_MODE
-C-ENUM:
+C-ENUM: ACCESS_MODE
NOT_USED_ACCESS
GRANT_ACCESS
SET_ACCESS
{ iInterface UCHAR } ;
TYPEDEF: USB_INTERFACE_DESCRIPTOR* PUSB_INTERFACE_DESCRIPTOR
-C-ENUM:
+C-ENUM: USBD_PIPE_TYPE
UsbdPipeTypeControl
UsbdPipeTypeIsochronous
UsbdPipeTypeBulk
UsbdPipeTypeInterrupt ;
-TYPEDEF: int USBD_PIPE_TYPE
STRUCT: WINUSB_PIPE_INFORMATION
{ PipeType USBD_PIPE_TYPE }
CONSTANT: D3D11_RETURN_TYPE_CONTINUED 8
TYPEDEF: int D3D11_RESOURCE_RETURN_TYPE
-C-ENUM: D3D11_CT_CBUFFER
- D3D11_CT_TBUFFER
- D3D11_CT_INTERFACE_POINTERS
- D3D11_CT_RESOURCE_BIND_INFO ;
-TYPEDEF: int D3D11_CBUFFER_TYPE
+C-ENUM: D3D11_CBUFFER_TYPE
+ D3D11_CT_CBUFFER
+ D3D11_CT_TBUFFER
+ D3D11_CT_INTERFACE_POINTERS
+ D3D11_CT_RESOURCE_BIND_INFO ;
TYPEDEF: D3D11_CBUFFER_TYPE* LPD3D11_CBUFFER_TYPE
STRUCT: D3D11_SIGNATURE_PARAMETER_DESC
CONSTANT: MAXD3DDECLUSAGEINDEX 15
CONSTANT: MAXD3DDECLLENGTH 64
-TYPEDEF: int D3DDECLMETHOD
-C-ENUM:
+C-ENUM: D3DDECLMETHOD
D3DDECLMETHOD_DEFAULT
D3DDECLMETHOD_PARTIALU
D3DDECLMETHOD_PARTIALV
HRESULT ForwardTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer )
HRESULT InverseTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer ) ;
-C-ENUM:
+C-ENUM: D3DX11_FFT_DATA_TYPE
D3DX11_FFT_DATA_TYPE_REAL
D3DX11_FFT_DATA_TYPE_COMPLEX ;
-TYPEDEF: int D3DX11_FFT_DATA_TYPE
CONSTANT: D3DX11_FFT_DIM_MASK_1D 1
CONSTANT: D3DX11_FFT_DIM_MASK_2D 3
{ UsageIndex UINT } ;
TYPEDEF: D3DXSEMANTIC* LPD3DXSEMANTIC
-C-ENUM:
+C-ENUM: D3DXREGISTER_SET
D3DXRS_BOOL
D3DXRS_INT4
D3DXRS_FLOAT4
D3DXRS_SAMPLER ;
-TYPEDEF: int D3DXREGISTER_SET
TYPEDEF: D3DXREGISTER_SET* LPD3DXREGISTER_SET
-C-ENUM:
+C-ENUM: D3DXPARAMETER_CLASS
D3DXPC_SCALAR
D3DXPC_VECTOR
D3DXPC_MATRIX_ROWS
D3DXPC_MATRIX_COLUMNS
D3DXPC_OBJECT
D3DXPC_STRUCT ;
-TYPEDEF: int D3DXPARAMETER_CLASS
TYPEDEF: D3DXPARAMETER_CLASS* LPD3DXPARAMETER_CLASS
C-ENUM:
USING: alien.c-types alien.syntax ;
IN: windows.directx.dcommon
-C-ENUM: DWRITE_MEASURING_MODE_NATURAL
- DWRITE_MEASURING_MODE_GDI_CLASSIC
- DWRITE_MEASURING_MODE_GDI_NATURAL ;
-TYPEDEF: int DWRITE_MEASURING_MODE
+C-ENUM: DWRITE_MEASURING_MODE
+ DWRITE_MEASURING_MODE_NATURAL
+ DWRITE_MEASURING_MODE_GDI_CLASSIC
+ DWRITE_MEASURING_MODE_GDI_NATURAL ;
LIBRARY: dwrite
-C-ENUM:
+C-ENUM: DWRITE_FONT_FILE_TYPE
DWRITE_FONT_FILE_TYPE_UNKNOWN
DWRITE_FONT_FILE_TYPE_CFF
DWRITE_FONT_FILE_TYPE_TRUETYPE
DWRITE_FONT_FILE_TYPE_TYPE1_PFB
DWRITE_FONT_FILE_TYPE_VECTOR
DWRITE_FONT_FILE_TYPE_BITMAP ;
-TYPEDEF: int DWRITE_FONT_FILE_TYPE
-C-ENUM:
+C-ENUM: DWRITE_FONT_FACE_TYPE
DWRITE_FONT_FACE_TYPE_CFF
DWRITE_FONT_FACE_TYPE_TRUETYPE
DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION
DWRITE_FONT_FACE_TYPE_VECTOR
DWRITE_FONT_FACE_TYPE_BITMAP
DWRITE_FONT_FACE_TYPE_UNKNOWN ;
-TYPEDEF: int DWRITE_FONT_FACE_TYPE
-
-CONSTANT: DWRITE_FONT_SIMULATIONS_NONE 0
-CONSTANT: DWRITE_FONT_SIMULATIONS_BOLD 1
-CONSTANT: DWRITE_FONT_SIMULATIONS_OBLIQUE 2
-TYPEDEF: int DWRITE_FONT_SIMULATIONS
-
-CONSTANT: DWRITE_FONT_WEIGHT_THIN 100
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200
-CONSTANT: DWRITE_FONT_WEIGHT_LIGHT 300
-CONSTANT: DWRITE_FONT_WEIGHT_NORMAL 400
-CONSTANT: DWRITE_FONT_WEIGHT_REGULAR 400
-CONSTANT: DWRITE_FONT_WEIGHT_MEDIUM 500
-CONSTANT: DWRITE_FONT_WEIGHT_DEMI_BOLD 600
-CONSTANT: DWRITE_FONT_WEIGHT_SEMI_BOLD 600
-CONSTANT: DWRITE_FONT_WEIGHT_BOLD 700
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BOLD 800
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BOLD 800
-CONSTANT: DWRITE_FONT_WEIGHT_BLACK 900
-CONSTANT: DWRITE_FONT_WEIGHT_HEAVY 900
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BLACK 950
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BLACK 950
-TYPEDEF: int DWRITE_FONT_WEIGHT
-
-CONSTANT: DWRITE_FONT_STRETCH_UNDEFINED 0
-CONSTANT: DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1
-CONSTANT: DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2
-CONSTANT: DWRITE_FONT_STRETCH_CONDENSED 3
-CONSTANT: DWRITE_FONT_STRETCH_SEMI_CONDENSED 4
-CONSTANT: DWRITE_FONT_STRETCH_NORMAL 5
-CONSTANT: DWRITE_FONT_STRETCH_MEDIUM 5
-CONSTANT: DWRITE_FONT_STRETCH_SEMI_EXPANDED 6
-CONSTANT: DWRITE_FONT_STRETCH_EXPANDED 7
-CONSTANT: DWRITE_FONT_STRETCH_EXTRA_EXPANDED 8
-CONSTANT: DWRITE_FONT_STRETCH_ULTRA_EXPANDED 9
-TYPEDEF: int DWRITE_FONT_STRETCH
-
-C-ENUM:
+
+C-ENUM: DWRITE_FONT_SIMULATIONS
+ DWRITE_FONT_SIMULATIONS_NONE
+ DWRITE_FONT_SIMULATIONS_BOLD
+ DWRITE_FONT_SIMULATIONS_OBLIQUE ;
+
+C-ENUM: DWRITE_FONT_WEIGHT
+ { DWRITE_FONT_WEIGHT_THIN 100 }
+ { DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200 }
+ { DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200 }
+ { DWRITE_FONT_WEIGHT_LIGHT 300 }
+ { DWRITE_FONT_WEIGHT_NORMAL 400 }
+ { DWRITE_FONT_WEIGHT_REGULAR 400 }
+ { DWRITE_FONT_WEIGHT_MEDIUM 500 }
+ { DWRITE_FONT_WEIGHT_DEMI_BOLD 600 }
+ { DWRITE_FONT_WEIGHT_SEMI_BOLD 600 }
+ { DWRITE_FONT_WEIGHT_BOLD 700 }
+ { DWRITE_FONT_WEIGHT_EXTRA_BOLD 800 }
+ { DWRITE_FONT_WEIGHT_ULTRA_BOLD 800 }
+ { DWRITE_FONT_WEIGHT_BLACK 900 }
+ { DWRITE_FONT_WEIGHT_HEAVY 900 }
+ { DWRITE_FONT_WEIGHT_EXTRA_BLACK 950 }
+ { DWRITE_FONT_WEIGHT_ULTRA_BLACK 950 } ;
+
+C-ENUM: DWRITE_FONT_STRETCH
+ { DWRITE_FONT_STRETCH_UNDEFINED 0 }
+ { DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1 }
+ { DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2 }
+ { DWRITE_FONT_STRETCH_CONDENSED 3 }
+ { DWRITE_FONT_STRETCH_SEMI_CONDENSED 4 }
+ { DWRITE_FONT_STRETCH_NORMAL 5 }
+ { DWRITE_FONT_STRETCH_MEDIUM 5 }
+ { DWRITE_FONT_STRETCH_SEMI_EXPANDED 6 }
+ { DWRITE_FONT_STRETCH_EXPANDED 7 }
+ { DWRITE_FONT_STRETCH_EXTRA_EXPANDED 8 }
+ { DWRITE_FONT_STRETCH_ULTRA_EXPANDED 9 } ;
+
+C-ENUM: DWRITE_FONT_STYLE
DWRITE_FONT_STYLE_NORMAL
DWRITE_FONT_STYLE_OBLIQUE
DWRITE_FONT_STYLE_ITALIC ;
-TYPEDEF: int DWRITE_FONT_STYLE
-C-ENUM:
+C-ENUM: DWRITE_INFORMATIONAL_STRING_ID
DWRITE_INFORMATIONAL_STRING_NONE
DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE
DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS
DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES
DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES
DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT ;
-TYPEDEF: int DWRITE_INFORMATIONAL_STRING_ID
STRUCT: DWRITE_FONT_METRICS
{ designUnitsPerEm USHORT }
{ advanceOffset FLOAT }
{ ascenderOffset FLOAT } ;
-C-ENUM:
+C-ENUM: DWRITE_FACTORY_TYPE
DWRITE_FACTORY_TYPE_SHARED
DWRITE_FACTORY_TYPE_ISOLATED ;
-TYPEDEF: int DWRITE_FACTORY_TYPE
C-TYPE: IDWriteFontFileStream
HRESULT GetLoader ( IDWriteFontFileLoader** fontFileLoader )
HRESULT Analyze ( BOOL* isSupportedFontType, DWRITE_FONT_FILE_TYPE* fontFileType, DWRITE_FONT_FACE_TYPE* fontFaceType, UINT32* numberOfFaces ) ;
-TYPEDEF: int DWRITE_PIXEL_GEOMETRY
-C-ENUM:
+C-ENUM: DWRITE_PIXEL_GEOMETRY
DWRITE_PIXEL_GEOMETRY_FLAT
DWRITE_PIXEL_GEOMETRY_RGB
DWRITE_PIXEL_GEOMETRY_BGR ;
-TYPEDEF: int DWRITE_RENDERING_MODE
-C-ENUM:
+C-ENUM: DWRITE_RENDERING_MODE
DWRITE_RENDERING_MODE_DEFAULT
DWRITE_RENDERING_MODE_ALIASED
DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC
HRESULT HasCharacter ( UINT32 unicodeValue, BOOL* exists )
HRESULT CreateFontFace ( IDWriteFontFace** fontFace ) ;
-TYPEDEF: int DWRITE_READING_DIRECTION
-C-ENUM:
+C-ENUM: DWRITE_READING_DRECTION
DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
DWRITE_READING_DIRECTION_RIGHT_TO_LEFT ;
-TYPEDEF: int DWRITE_FLOW_DIRECTION
-C-ENUM:
+C-ENUM: DWRITE_FLOW_DIRECTION
DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM ;
-TYPEDEF: int DWRITE_TEXT_ALIGNMENT
-C-ENUM:
+C-ENUM: DWRITE_TEXT_ALIGNMENT
DWRITE_TEXT_ALIGNMENT_LEADING
DWRITE_TEXT_ALIGNMENT_TRAILING
DWRITE_TEXT_ALIGNMENT_CENTER ;
-TYPEDEF: int DWRITE_PARAGRAPH_ALIGNMENT
-C-ENUM:
+C-ENUM: DWRITE_PARAGRAPH_ALIGNMENT
DWRITE_PARAGRAPH_ALIGNMENT_NEAR
DWRITE_PARAGRAPH_ALIGNMENT_FAR
DWRITE_PARAGRAPH_ALIGNMENT_CENTER ;
-TYPEDEF: int DWRITE_WORD_WRAPPING
-C-ENUM:
+C-ENUM: DWRITE_WORD_WRAPPING
DWRITE_WORD_WRAPPING_WRAP
DWRITE_WORD_WRAPPING_NO_WRAP ;
-TYPEDEF: int DWRITE_LINE_SPACING_METHOD
-C-ENUM:
+C-ENUM: DWRITE_LINE_SPACING_METHOD
DWRITE_LINE_SPACING_METHOD_DEFAULT
DWRITE_LINE_SPACING_METHOD_UNIFORM ;
-TYPEDEF: int DWRITE_TRIMMING_GRANULARITY
-C-ENUM:
+C-ENUM: DWRITE_TRIMMING_GRANULARITY
DWRITE_TRIMMING_GRANULARITY_NONE
DWRITE_TRIMMING_GRANULARITY_CHARACTER
DWRITE_TRIMMING_GRANULARITY_WORD ;
UINT32 GetFontFeatureCount ( )
HRESULT GetFontFeature ( UINT32 fontFeatureIndex, DWRITE_FONT_FEATURE* fontFeature ) ;
-CONSTANT: DWRITE_SCRIPT_SHAPES_DEFAULT 0
-CONSTANT: DWRITE_SCRIPT_SHAPES_NO_VISUAL 1
-TYPEDEF: int DWRITE_SCRIPT_SHAPES
+C-ENUM: DWRITE_SCRIPT_SHAPES
+ DWRITE_SCRIPT_SHAPES_DEFAULT
+ DWRITE_SCRIPT_SHAPES_NO_VISUAL ;
STRUCT: DWRITE_SCRIPT_ANALYSIS
{ script USHORT }
{ shapes DWRITE_SCRIPT_SHAPES } ;
-C-ENUM:
+C-ENUM: DWRITE_BREAK_CONDITION
DWRITE_BREAK_CONDITION_NEUTRAL
DWRITE_BREAK_CONDITION_CAN_BREAK
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
DWRITE_BREAK_CONDITION_MUST_BREAK ;
-TYPEDEF: int DWRITE_BREAK_CONDITION
STRUCT: DWRITE_LINE_BREAKPOINT
{ data BYTE } ;
-C-ENUM:
+C-ENUM: DWRITE_NUMBER_SUBSTITUTION_METHOD
DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE
DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL
DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE
DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL
DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL ;
-TYPEDEF: int DWRITE_NUMBER_SUBSTITUTION_METHOD
COM-INTERFACE: IDWriteNumberSubstitution IUnknown {14885CC9-BAB0-4f90-B6ED-5C366A2CD03D} ;
HRESULT CreateFontFaceFromHdc ( HDC hdc, IDWriteFontFace** fontFace )
HRESULT CreateBitmapRenderTarget ( HDC hdc, UINT32 width, UINT32 height, IDWriteBitmapRenderTarget** renderTarget ) ;
-C-ENUM: DWRITE_TEXTURE_ALIASED_1x1
- DWRITE_TEXTURE_CLEARTYPE_3x1 ;
-TYPEDEF: int DWRITE_TEXTURE_TYPE
+C-ENUM: DWRITE_TEXTURE_TYPE
+ DWRITE_TEXTURE_ALIASED_1x1
+ DWRITE_TEXTURE_CLEARTYPE_3x1 ;
CONSTANT: DWRITE_ALPHA_MAX 255
{ Numerator UINT }
{ Denominator UINT } ;
-C-ENUM: DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
- DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
- DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
- DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
-TYPEDEF: int DXGI_MODE_SCANLINE_ORDER
+C-ENUM: DXGI_MODE_SCANLINE_ORDER
+ DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
+ DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
+ DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
+ DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
-C-ENUM: DXGI_MODE_SCALING_UNSPECIFIED
- DXGI_MODE_SCALING_CENTERED
- DXGI_MODE_SCALING_STRETCHED ;
-TYPEDEF: int DXGI_MODE_SCALING
+C-ENUM: DXGI_MODE_SCALING
+ DXGI_MODE_SCALING_UNSPECIFIED
+ DXGI_MODE_SCALING_CENTERED
+ DXGI_MODE_SCALING_STRETCHED ;
-C-ENUM: DXGI_MODE_ROTATION_UNSPECIFIED
- DXGI_MODE_ROTATION_IDENTITY
- DXGI_MODE_ROTATION_ROTATE90
- DXGI_MODE_ROTATION_ROTATE180
- DXGI_MODE_ROTATION_ROTATE270 ;
-TYPEDEF: int DXGI_MODE_ROTATION
+C-ENUM: DXGI_MODE_ROTATION
+ DXGI_MODE_ROTATION_UNSPECIFIED
+ DXGI_MODE_ROTATION_IDENTITY
+ DXGI_MODE_ROTATION_ROTATE90
+ DXGI_MODE_ROTATION_ROTATE180
+ DXGI_MODE_ROTATION_ROTATE270 ;
STRUCT: DXGI_MODE_DESC
{ Width UINT }
{ pFormat WAVEFORMATEX* }
{ MaxFrameCount UINT32 } ;
-C-ENUM:
- XAPO_BUFFER_SILENT
- XAPO_BUFFER_VALID ;
-TYPEDEF: int XAPO_BUFFER_FLAGS
+C-ENUM: XAPO_BUFFER_FLAGS
+ XAPO_BUFFER_SILENT
+ XAPO_BUFFER_VALID ;
STRUCT: XAPO_PROCESS_BUFFER_PARAMETERS
{ pBuffer void* }
CONSTANT: THREAD_PRIORITY_NORMAL 0
CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
-C-ENUM:
+C-ENUM: COMPUTER_NAME_FORMAT
ComputerNameNetBIOS
ComputerNameDnsHostname
ComputerNameDnsDomain
ComputerNamePhysicalDnsFullyQualified
ComputerNameMax ;
-TYPEDEF: uint COMPUTER_NAME_FORMAT
-
STRUCT: OVERLAPPED
{ internal UINT_PTR }
{ internal-high UINT_PTR }
int* piLogicalToVisual
) ;
-C-ENUM: SCRIPT_JUSTIFY_NONE
-SCRIPT_JUSTIFY_ARABIC_BLANK
-SCRIPT_JUSTIFY_CHARACTER
-SCRIPT_JUSTIFY_RESERVED1
-SCRIPT_JUSTIFY_BLANK
-SCRIPT_JUSTIFY_RESERVED2
-SCRIPT_JUSTIFY_RESERVED3
-SCRIPT_JUSTIFY_ARABIC_NORMAL
-SCRIPT_JUSTIFY_ARABIC_KASHIDA
-SCRIPT_JUSTIFY_ALEF
-SCRIPT_JUSTIFY_HA
-SCRIPT_JUSTIFY_RA
-SCRIPT_JUSTIFY_BA
-SCRIPT_JUSTIFY_BARA
-SCRIPT_JUSTIFY_SEEN
-SCRIPT_JUSTIFFY_RESERVED4 ;
+C-ENUM: f
+ SCRIPT_JUSTIFY_NONE
+ SCRIPT_JUSTIFY_ARABIC_BLANK
+ SCRIPT_JUSTIFY_CHARACTER
+ SCRIPT_JUSTIFY_RESERVED1
+ SCRIPT_JUSTIFY_BLANK
+ SCRIPT_JUSTIFY_RESERVED2
+ SCRIPT_JUSTIFY_RESERVED3
+ SCRIPT_JUSTIFY_ARABIC_NORMAL
+ SCRIPT_JUSTIFY_ARABIC_KASHIDA
+ SCRIPT_JUSTIFY_ALEF
+ SCRIPT_JUSTIFY_HA
+ SCRIPT_JUSTIFY_RA
+ SCRIPT_JUSTIFY_BA
+ SCRIPT_JUSTIFY_BARA
+ SCRIPT_JUSTIFY_SEEN
+ SCRIPT_JUSTIFFY_RESERVED4 ;
STRUCT: SCRIPT_VISATTR
{ flags WORD } ;
! * EXTENDED WINDOW MANAGER HINTS
! *****************************************************************
-C-ENUM: _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;
+C-ENUM: f _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;
{ t cpFloat }
{ n cpVect } ;
-C-ENUM:
+C-ENUM: cpShapeType
CP_CIRCLE_SHAPE
CP_SEGMENT_SHAPE
CP_POLY_SHAPE
CP_NUM_SHAPES ;
-TYPEDEF: int cpShapeType
CALLBACK: cpBB cacheData_cb ( cpShape* shape, cpVect p, cpVect rot ) ;
CALLBACK: void destroy_cb ( cpShape* shape ) ;
FUNCTION: cpContact* cpContactInit ( cpContact* con, cpVect p, cpVect n, cpFloat dist, cpHashValue hash ) ;
-C-ENUM:
+C-ENUM: cpArbiterState
cpArbiterStateNormal
cpArbiterStateFirstColl
cpArbiterStateIgnore ;
-TYPEDEF: int cpArbiterState
STRUCT: cpArbiter
{ numContacts int }
! Copyright (C) 2010 Erik Charlebois.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types alien.syntax classes.struct ;
+USING: accessors alien alien.c-types alien.strings alien.syntax arrays
+classes.struct io.encodings.ascii kernel locals math math.intervals
+sequences specialized-arrays strings typed ;
IN: elf
+! FFI data
CONSTANT: EI_NIDENT 16
CONSTANT: EI_MAG0 0
CONSTANT: EI_MAG1 1
STRUCT: Elf64_Dyn
{ d_tag Elf64_Sxword }
{ d_val Elf64_Xword } ;
+
+! Low-level interface
+SPECIALIZED-ARRAYS: Elf32_Shdr Elf64_Shdr Elf32_Sym Elf64_Sym Elf32_Phdr Elf64_Phdr uchar ;
+UNION: Elf32/64_Ehdr Elf32_Ehdr Elf64_Ehdr ;
+UNION: Elf32/64_Shdr Elf32_Shdr Elf64_Shdr ;
+UNION: Elf32/64_Shdr-array Elf32_Shdr-array Elf64_Shdr-array ;
+UNION: Elf32/64_Sym Elf32_Sym Elf64_Sym ;
+UNION: Elf32/64_Sym-array Elf32_Sym-array Elf64_Sym-array ;
+UNION: Elf32/64_Phdr Elf32_Phdr Elf64_Phdr ;
+UNION: Elf32/64_Phdr-array Elf32_Phdr-array Elf64_Phdr-array ;
+
+TYPED: 64-bit? ( elf: Elf32/64_Ehdr -- ? )
+ e_ident>> EI_CLASS swap nth ELFCLASS64 = ;
+
+TYPED: elf-header ( c-ptr -- elf: Elf32/64_Ehdr )
+ [ Elf64_Ehdr memory>struct 64-bit? ] keep swap
+ [ Elf64_Ehdr memory>struct ]
+ [ Elf32_Ehdr memory>struct ] if ;
+
+TYPED:: elf-section-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Shdr-array )
+ elf [ e_shoff>> ] [ e_shnum>> ] bi :> ( off num )
+ off elf >c-ptr <displaced-alien> num
+ elf 64-bit?
+ [ <direct-Elf64_Shdr-array> ]
+ [ <direct-Elf32_Shdr-array> ] if ;
+
+TYPED:: elf-program-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Phdr-array )
+ elf [ e_phoff>> ] [ e_phnum>> ] bi :> ( off num )
+ off elf >c-ptr <displaced-alien> num
+ elf 64-bit?
+ [ <direct-Elf64_Phdr-array> ]
+ [ <direct-Elf32_Phdr-array> ] if ;
+
+TYPED: elf-loadable-segments ( headers: Elf32/64_Phdr-array -- headers: Elf32/64_Phdr-array )
+ [ p_type>> PT_LOAD = ] filter ;
+
+TYPED:: elf-segment-sections ( segment: Elf32/64_Phdr sections: Elf32/64_Shdr-array -- sections )
+ segment [ p_offset>> dup ] [ p_filesz>> + ] bi [a,b) :> segment-interval
+ sections [ dup [ sh_offset>> dup ] [ sh_size>> + ] bi [a,b) 2array ] { } map-as :> section-intervals
+ section-intervals [ second segment-interval interval-intersect empty-interval = not ]
+ filter [ first ] map ;
+
+TYPED:: virtual-address-segment ( elf: Elf32/64_Ehdr address -- program-header/f )
+ elf elf-program-headers elf-loadable-segments [
+ [ p_vaddr>> dup ] [ p_memsz>> + ] bi [a,b)
+ address swap interval-contains?
+ ] filter [ f ] [ first ] if-empty ;
+
+TYPED:: virtual-address-section ( elf: Elf32/64_Ehdr address -- section-header/f )
+ elf address virtual-address-segment :> segment
+ segment elf elf-section-headers elf-segment-sections :> sections
+ address segment p_vaddr>> - segment p_offset>> + :> faddress
+ sections [
+ [ sh_offset>> dup ] [ sh_size>> + ] bi [a,b)
+ faddress swap interval-contains?
+ ] filter [ f ] [ first ] if-empty ;
+
+TYPED:: elf-segment-data ( elf: Elf32/64_Ehdr header: Elf32/64_Phdr -- uchar-array/f )
+ header [ p_offset>> elf >c-ptr <displaced-alien> ] [ p_filesz>> ] bi <direct-uchar-array> ;
+
+TYPED:: elf-section-data ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- uchar-array/f )
+ header [ sh_offset>> elf >c-ptr <displaced-alien> ] [ sh_size>> ] bi <direct-uchar-array> ;
+
+TYPED:: elf-section-data-by-index ( elf: Elf32/64_Ehdr index -- header/f uchar-array/f )
+ elf elf-section-headers :> sections
+ index sections nth :> header
+ elf header elf-section-data :> data
+ header data ;
+
+TYPED:: elf-section-name ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- name: string )
+ elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
+ header sh_name>> section-names <displaced-alien> ascii alien>string ;
+
+TYPED:: elf-section-data-by-name ( elf: Elf32/64_Ehdr name: string -- header/f uchar-array/f )
+ elf elf-section-headers :> sections
+ elf e_shstrndx>> :> ndx
+ elf ndx sections nth elf-section-data >c-ptr :> section-names
+ sections 1 tail [
+ sh_name>> section-names <displaced-alien> ascii alien>string name =
+ ] find nip
+ [ dup elf swap elf-section-data ]
+ [ f f ] if* ;
+
+TYPED:: elf-sections ( elf: Elf32/64_Ehdr -- sections )
+ elf elf-section-headers :> sections
+ elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
+ sections [
+ [ sh_name>> section-names <displaced-alien>
+ ascii alien>string ] keep 2array
+ ] { } map-as ;
+
+TYPED:: elf-symbols ( elf: Elf32/64_Ehdr section-data: uchar-array -- symbols )
+ elf ".strtab" elf-section-data-by-name nip >c-ptr :> strings
+ section-data [ >c-ptr ] [ length ] bi
+ elf 64-bit?
+ [ Elf64_Sym heap-size / <direct-Elf64_Sym-array> ]
+ [ Elf32_Sym heap-size / <direct-Elf32_Sym-array> ] if
+ [ [ st_name>> strings <displaced-alien> ascii alien>string ] keep 2array ] { } map-as ;
+
+! High level interface
+TUPLE: elf elf-header ;
+TUPLE: section name elf-header section-header data ;
+TUPLE: segment elf-header program-header data ;
+TUPLE: symbol name elf-header sym data ;
+
+GENERIC: sections ( obj -- sections )
+
+: <elf> ( c-ptr -- elf )
+ elf-header elf boa ;
+
+M:: elf sections ( elf -- sections )
+ elf elf-header>> elf-sections
+ [
+ first2 :> ( name header )
+ elf elf-header>> header elf-section-data :> data
+ name elf elf-header>> header data section boa
+ ] { } map-as ;
+
+:: segments ( elf -- segments )
+ elf elf-header>> elf-program-headers
+ [| header |
+ elf elf-header>> header elf-segment-data :> data
+ elf elf-header>> header data segment boa
+ ] { } map-as ;
+
+M:: segment sections ( segment -- sections )
+ segment program-header>>
+ segment elf-header>> elf-section-headers
+ elf-segment-sections
+
+ [| header |
+ segment elf-header>> header elf-section-name :> name
+ segment elf-header>> header elf-section-data :> data
+ name segment elf-header>> header data section boa
+ ] { } map-as ;
+
+:: symbols ( section -- symbols )
+ section elf-header>>
+ section data>>
+ elf-symbols
+ [
+ first2 :> ( name sym )
+ name section elf-header>> sym f symbol boa
+ ] { } map-as ;
+
+:: symbol-data ( symbol -- data )
+ symbol [ elf-header>> ] [ sym>> st_value>> ] bi virtual-address-segment :> segment
+ symbol sym>> st_value>> segment p_vaddr>> - segment p_offset>> + :> faddress
+ faddress symbol elf-header>> >c-ptr <displaced-alien>
+ symbol sym>> st_size>> <direct-uchar-array> ;
+
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors arrays classes.struct destructors game.loop
+game.worlds gpu gpu.buffers gpu.effects.blur gpu.framebuffers
+gpu.render gpu.shaders gpu.state gpu.textures gpu.util images
+images.loader kernel literals locals make math math.rectangles
+math.vectors namespaces opengl.gl sequences specialized-arrays
+ui.gadgets.worlds ui.gestures ui.pixel-formats gpu.effects.step
+images.pgm images.ppm ;
+FROM: alien.c-types => float ;
+SPECIALIZED-ARRAY: float
+IN: fluids
+
+STRUCT: float2_t
+ { x float }
+ { y float } ;
+
+: f2+ ( lhs rhs -- res )
+ [ [ x>> ] bi@ + ]
+ [ [ y>> ] bi@ + ]
+ 2bi float2_t <struct-boa> ; inline
+
+: f2- ( lhs rhs -- res )
+ [ [ x>> ] bi@ - ]
+ [ [ y>> ] bi@ - ]
+ 2bi float2_t <struct-boa> ; inline
+
+: f2*n ( lhs rhs -- res )
+ [ [ x>> ] dip * ]
+ [ [ y>> ] dip * ]
+ 2bi float2_t <struct-boa> ; inline
+
+STRUCT: particle_t
+ { p float2_t }
+ { p' float2_t }
+ { m float } ;
+SPECIALIZED-ARRAY: particle_t
+
+CONSTANT: gravity S{ float2_t f 0.0 -0.1 }
+
+:: verlet-integrate-particle ( p dt -- p' )
+ p p>> 2.0 f2*n :> v1
+ p p'>> :> v2
+ gravity dt dt * 1.0 p m>> 2.0 * / * f2*n :> v3
+ v1 v2 f2- v3 f2+
+ p p m>> particle_t <struct-boa> ; inline
+
+CONSTANT: initial-particles
+particle_t-array{
+ S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.499 0.599 } 1.0 }
+ S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.501 0.599 } 3.0 }
+
+ S{ particle_t f S{ float2_t f 0.5 0.5 } S{ float2_t f 0.5 0.5 } 2.0 }
+ S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.5 0.599 } 1.0 }
+ S{ particle_t f S{ float2_t f 0.6 0.5 } S{ float2_t f 0.6 0.5 } 3.0 }
+ S{ particle_t f S{ float2_t f 0.7 0.5 } S{ float2_t f 0.7 0.5 } 1.0 }
+ S{ particle_t f S{ float2_t f 0.1 0.5 } S{ float2_t f 0.1 0.5 } 5.0 }
+ S{ particle_t f S{ float2_t f 0.2 0.5 } S{ float2_t f 0.2 0.5 } 1.0 }
+ S{ particle_t f S{ float2_t f 0.3 0.3 } S{ float2_t f 0.3 0.3 } 4.0 }
+ S{ particle_t f S{ float2_t f 0.5 0.15 } S{ float2_t f 0.5 0.15 } 1.0 }
+ S{ particle_t f S{ float2_t f 0.5 0.1 } S{ float2_t f 0.5 0.1 } 9.0 }
+}
+
+: integrate-particles! ( particles dt -- particles )
+ [ verlet-integrate-particle ] curry map! ;
+
+TUPLE: fluids-world < game-world
+ particles texture ramp { paused boolean initial: f } ;
+
+: make-texture ( pathname -- texture )
+ load-image
+ [
+ [ component-order>> ]
+ [ component-type>> ] bi
+ T{ texture-parameters
+ { wrap clamp-texcoord-to-edge }
+ { min-filter filter-nearest }
+ { mag-filter filter-nearest }
+ { min-mipmap-filter f } }
+ <texture-2d>
+ ]
+ [
+ 0 swap [ allocate-texture-image ] 3keep 2drop
+ ] bi ;
+
+SYMBOL: fluid
+
+: integrate ( world -- )
+ particles>> $[ 60 fps 1000000 /f ] integrate-particles! drop ;
+
+: pause ( -- )
+ fluid get [ not ] change-paused drop ;
+
+: step ( -- )
+ fluid get paused>> [ fluid get integrate ] when ;
+
+M: fluids-world begin-game-world
+ dup fluid set
+ init-gpu
+ initial-particles clone >>particles
+ "resource:extra/fluids/particle2.pgm" make-texture >>texture
+ "resource:extra/fluids/colors.ppm" make-texture >>ramp
+ drop ;
+
+M: fluids-world end-game-world
+ drop ;
+
+M: fluids-world tick-game-world
+ dup paused>> [ drop ] [ integrate ] if ;
+
+M:: fluids-world draw-world* ( world -- )
+ world particles>> [
+ [ p>> [ x>> , ] [ y>> , ] bi ] each
+ ] curry float-array{ } make :> verts
+
+ [
+ verts world texture>> 50.0 { 320 240 } blended-point-sprite-batch &dispose
+
+ blend-state new set-gpu-state
+
+ gaussian-blur &dispose world ramp>> { 1024 768 } step-texture &dispose
+ { 1024 768 } draw-texture
+ ] with-destructors
+ ;
+
+GAME: fluids {
+ { world-class fluids-world }
+ { title "Fluids Test" }
+ { pixel-format-attributes {
+ windowed double-buffered T{ depth-bits { value 24 } } } }
+ { pref-dim { 1024 768 } }
+ { tick-interval-micros $[ 60 fps ] }
+} ;
+
+MAIN: fluids
+
+fluids-world H{
+ { T{ button-down } [ [
+ hand-loc get { 1024 768 } v/ 2 v*n 1 v-n { 1 -1 } v* first2 float2_t <struct-boa>
+ dup 2.0 particle_t <struct-boa> suffix
+ ] change-particles drop ] }
+} set-gestures
--- /dev/null
+P2
+# CREATOR: GIMP PNM Filter Version 1.1
+128 128
+255
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+2
+2
+3
+3
+3
+4
+4
+4
+4
+4
+4
+4
+4
+3
+4
+3
+3
+3
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+3
+3
+4
+5
+6
+6
+7
+7
+7
+7
+8
+8
+8
+8
+8
+8
+8
+8
+7
+7
+6
+6
+5
+5
+4
+4
+2
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+4
+4
+5
+6
+7
+7
+8
+8
+10
+10
+10
+11
+12
+12
+12
+12
+12
+12
+12
+12
+12
+11
+11
+11
+11
+10
+10
+9
+8
+7
+7
+6
+5
+5
+3
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+3
+5
+6
+7
+7
+9
+10
+10
+11
+12
+13
+13
+14
+14
+15
+15
+15
+15
+16
+16
+16
+15
+15
+16
+15
+15
+15
+15
+14
+13
+13
+12
+12
+11
+10
+9
+7
+6
+6
+5
+4
+3
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+3
+4
+6
+7
+9
+9
+10
+12
+13
+13
+15
+15
+16
+17
+17
+18
+18
+19
+19
+19
+20
+20
+20
+20
+20
+20
+20
+19
+19
+19
+19
+18
+17
+17
+16
+15
+14
+13
+13
+12
+10
+9
+8
+7
+6
+5
+3
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+4
+6
+7
+9
+9
+11
+12
+14
+15
+15
+16
+17
+19
+19
+19
+20
+21
+21
+23
+23
+23
+23
+23
+24
+24
+24
+24
+24
+24
+24
+22
+23
+23
+21
+21
+20
+19
+19
+19
+18
+16
+16
+15
+13
+12
+11
+10
+8
+6
+5
+4
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+4
+6
+8
+9
+11
+12
+13
+14
+16
+17
+18
+19
+20
+21
+22
+23
+23
+25
+25
+26
+26
+26
+27
+27
+27
+27
+28
+27
+28
+28
+27
+27
+27
+26
+26
+26
+25
+25
+24
+23
+22
+21
+21
+19
+18
+17
+16
+15
+13
+12
+10
+9
+8
+5
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+5
+6
+8
+9
+11
+13
+14
+16
+17
+19
+19
+20
+21
+23
+24
+25
+26
+27
+28
+28
+28
+29
+30
+30
+31
+31
+31
+32
+31
+32
+31
+32
+31
+32
+31
+31
+30
+29
+29
+28
+27
+27
+26
+25
+24
+23
+22
+20
+19
+18
+16
+15
+14
+13
+11
+9
+8
+6
+5
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+4
+7
+8
+10
+12
+13
+15
+16
+18
+19
+20
+22
+23
+25
+26
+27
+28
+29
+30
+30
+32
+32
+33
+33
+34
+34
+35
+35
+35
+35
+35
+36
+35
+35
+35
+35
+34
+35
+34
+33
+33
+32
+32
+30
+30
+28
+28
+27
+26
+25
+23
+22
+21
+19
+18
+17
+15
+13
+11
+10
+8
+6
+5
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+3
+6
+7
+10
+12
+13
+15
+17
+18
+20
+21
+22
+24
+26
+27
+28
+30
+31
+31
+32
+33
+34
+35
+36
+37
+37
+37
+38
+38
+39
+39
+40
+39
+39
+39
+39
+40
+39
+39
+38
+38
+37
+36
+36
+36
+34
+33
+33
+32
+30
+30
+29
+26
+26
+25
+23
+22
+20
+19
+17
+15
+14
+11
+9
+8
+5
+3
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+7
+9
+11
+13
+15
+16
+19
+20
+22
+23
+25
+27
+28
+30
+30
+32
+33
+34
+35
+37
+37
+39
+40
+39
+40
+41
+42
+42
+43
+43
+43
+43
+44
+43
+44
+43
+43
+43
+42
+43
+41
+41
+40
+40
+39
+38
+38
+37
+35
+34
+34
+32
+30
+30
+28
+27
+25
+24
+22
+21
+19
+17
+15
+13
+11
+9
+7
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+8
+11
+13
+15
+16
+18
+21
+22
+23
+25
+27
+28
+30
+32
+33
+35
+35
+37
+38
+39
+40
+41
+42
+43
+44
+45
+45
+45
+46
+47
+47
+47
+47
+47
+48
+47
+47
+47
+47
+47
+46
+45
+45
+45
+43
+43
+42
+41
+41
+40
+38
+37
+36
+34
+33
+32
+30
+28
+27
+26
+24
+22
+20
+18
+16
+15
+12
+10
+9
+6
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+8
+10
+11
+14
+16
+17
+19
+22
+24
+25
+27
+29
+31
+32
+34
+36
+36
+38
+39
+40
+42
+42
+44
+45
+45
+47
+48
+48
+49
+49
+50
+51
+50
+51
+51
+52
+51
+51
+51
+51
+51
+50
+50
+50
+49
+48
+47
+47
+46
+44
+44
+43
+42
+41
+40
+38
+37
+35
+33
+32
+31
+28
+27
+25
+24
+22
+20
+18
+15
+13
+11
+10
+8
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+8
+11
+12
+15
+17
+19
+21
+23
+25
+27
+29
+31
+32
+34
+35
+38
+39
+40
+42
+43
+44
+45
+47
+48
+49
+49
+51
+52
+52
+52
+53
+54
+54
+54
+55
+55
+55
+55
+55
+55
+55
+54
+54
+53
+54
+53
+52
+52
+50
+50
+49
+47
+46
+45
+44
+43
+42
+41
+39
+37
+36
+34
+32
+31
+29
+27
+25
+23
+21
+19
+17
+15
+13
+10
+8
+5
+3
+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
+1
+4
+7
+8
+11
+13
+16
+18
+21
+22
+25
+27
+28
+30
+32
+34
+35
+37
+39
+41
+42
+44
+45
+47
+48
+50
+50
+51
+53
+54
+55
+55
+55
+56
+57
+58
+58
+58
+59
+58
+59
+59
+59
+59
+58
+58
+58
+57
+57
+57
+56
+55
+54
+53
+52
+52
+50
+49
+48
+47
+46
+44
+42
+41
+40
+37
+36
+34
+32
+31
+29
+26
+24
+22
+20
+18
+16
+13
+11
+9
+6
+4
+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
+2
+4
+7
+9
+12
+14
+17
+19
+21
+23
+26
+28
+30
+32
+34
+36
+37
+39
+41
+43
+44
+46
+48
+49
+51
+52
+53
+55
+55
+56
+57
+58
+59
+59
+60
+61
+62
+62
+62
+63
+63
+63
+63
+63
+63
+62
+62
+62
+62
+61
+60
+60
+59
+58
+57
+56
+55
+54
+53
+52
+51
+49
+47
+46
+44
+43
+41
+40
+37
+36
+34
+32
+30
+28
+25
+23
+21
+19
+17
+15
+12
+10
+7
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+8
+10
+13
+15
+17
+20
+22
+24
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+46
+48
+50
+51
+53
+54
+56
+57
+58
+60
+60
+61
+62
+63
+63
+64
+65
+66
+66
+66
+67
+67
+67
+66
+67
+67
+67
+66
+66
+65
+65
+64
+64
+63
+62
+61
+61
+59
+58
+57
+55
+54
+53
+51
+50
+49
+46
+44
+43
+41
+39
+37
+35
+33
+31
+29
+27
+24
+22
+20
+17
+15
+12
+10
+7
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+8
+10
+13
+16
+19
+21
+23
+26
+28
+30
+32
+34
+37
+38
+41
+43
+45
+47
+48
+50
+52
+53
+55
+57
+58
+59
+60
+61
+63
+64
+65
+65
+67
+68
+68
+69
+69
+70
+70
+70
+70
+70
+71
+71
+71
+70
+71
+70
+69
+68
+68
+67
+66
+66
+65
+64
+63
+62
+60
+59
+58
+56
+55
+53
+52
+50
+49
+46
+44
+43
+40
+38
+37
+34
+32
+30
+28
+26
+23
+21
+18
+16
+13
+11
+8
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+8
+11
+14
+16
+18
+21
+24
+26
+29
+31
+33
+36
+37
+40
+42
+44
+46
+48
+50
+51
+54
+55
+56
+58
+60
+61
+63
+64
+65
+67
+67
+69
+70
+71
+71
+72
+73
+73
+74
+74
+74
+74
+75
+75
+75
+75
+75
+74
+74
+73
+73
+72
+71
+70
+70
+69
+68
+66
+65
+64
+63
+62
+60
+59
+56
+55
+53
+51
+50
+48
+46
+44
+41
+39
+37
+35
+33
+31
+28
+26
+24
+21
+19
+16
+14
+11
+9
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+9
+11
+13
+16
+19
+22
+24
+26
+30
+32
+34
+36
+39
+41
+43
+46
+48
+50
+51
+53
+55
+57
+58
+60
+62
+63
+65
+66
+68
+70
+70
+72
+73
+73
+75
+75
+76
+76
+77
+78
+78
+79
+78
+78
+79
+79
+78
+78
+78
+78
+77
+76
+75
+75
+75
+73
+73
+72
+70
+69
+68
+66
+65
+64
+62
+60
+59
+57
+56
+53
+51
+50
+48
+45
+44
+40
+39
+36
+34
+32
+29
+27
+24
+21
+19
+16
+14
+11
+9
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+8
+11
+14
+16
+19
+22
+24
+27
+30
+32
+35
+37
+40
+42
+44
+46
+48
+50
+53
+55
+57
+58
+61
+62
+64
+65
+67
+69
+70
+72
+73
+74
+75
+77
+78
+78
+79
+80
+80
+81
+81
+82
+82
+82
+83
+83
+83
+83
+82
+82
+81
+81
+81
+80
+79
+78
+78
+77
+75
+74
+73
+72
+71
+68
+67
+66
+64
+62
+61
+59
+57
+55
+52
+50
+49
+46
+44
+42
+39
+37
+35
+32
+30
+28
+24
+22
+19
+17
+14
+11
+9
+6
+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
+0
+0
+0
+0
+3
+6
+9
+11
+14
+17
+19
+22
+25
+28
+31
+33
+35
+38
+41
+43
+45
+48
+50
+52
+54
+56
+58
+61
+62
+64
+65
+67
+69
+71
+72
+74
+75
+77
+78
+79
+80
+81
+82
+83
+84
+84
+85
+85
+86
+87
+87
+86
+86
+86
+86
+86
+86
+85
+85
+84
+84
+82
+82
+81
+80
+79
+78
+76
+75
+74
+73
+71
+69
+68
+66
+64
+62
+60
+58
+56
+54
+52
+50
+48
+45
+43
+40
+38
+35
+33
+30
+27
+25
+22
+20
+16
+13
+11
+8
+6
+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
+0
+0
+2
+5
+8
+11
+14
+17
+19
+22
+25
+28
+31
+33
+35
+38
+41
+43
+45
+48
+51
+52
+54
+57
+59
+62
+64
+65
+68
+69
+71
+73
+75
+76
+78
+79
+80
+82
+83
+84
+85
+86
+87
+87
+89
+89
+89
+90
+90
+90
+90
+90
+90
+91
+90
+90
+89
+89
+88
+88
+87
+85
+85
+84
+82
+81
+81
+79
+77
+76
+75
+73
+71
+69
+68
+66
+63
+61
+59
+57
+55
+52
+50
+48
+45
+43
+40
+38
+36
+33
+31
+28
+25
+22
+19
+16
+14
+11
+8
+5
+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
+2
+5
+8
+10
+13
+16
+20
+22
+25
+27
+31
+33
+36
+38
+41
+43
+46
+49
+51
+54
+56
+58
+60
+62
+64
+67
+69
+71
+73
+75
+77
+78
+80
+81
+83
+84
+85
+87
+88
+88
+89
+91
+91
+92
+93
+93
+94
+94
+94
+94
+94
+95
+94
+94
+94
+93
+93
+92
+91
+90
+90
+89
+87
+87
+86
+84
+83
+81
+80
+78
+77
+75
+73
+70
+69
+67
+65
+62
+60
+58
+56
+54
+51
+48
+46
+43
+42
+38
+36
+33
+31
+28
+25
+22
+19
+16
+13
+11
+8
+5
+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
+1
+4
+7
+10
+13
+17
+19
+22
+25
+28
+30
+33
+36
+39
+41
+44
+47
+50
+52
+54
+56
+59
+61
+64
+66
+68
+70
+72
+74
+76
+77
+80
+82
+83
+85
+87
+87
+89
+90
+92
+92
+93
+94
+96
+96
+97
+97
+97
+98
+98
+98
+98
+98
+98
+98
+98
+97
+97
+95
+95
+94
+93
+92
+92
+90
+89
+88
+86
+84
+83
+81
+79
+78
+76
+74
+72
+70
+68
+66
+64
+61
+59
+57
+54
+52
+50
+46
+44
+41
+39
+36
+33
+30
+27
+25
+22
+19
+16
+13
+10
+7
+4
+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
+3
+6
+10
+13
+16
+19
+21
+24
+27
+30
+33
+36
+39
+41
+45
+47
+50
+53
+55
+57
+59
+62
+64
+67
+69
+72
+74
+76
+77
+79
+81
+84
+85
+86
+89
+90
+91
+92
+94
+95
+96
+97
+98
+99
+100
+100
+101
+101
+101
+102
+102
+102
+102
+102
+102
+101
+101
+100
+100
+99
+99
+98
+96
+95
+94
+93
+91
+90
+88
+87
+85
+83
+82
+79
+78
+75
+74
+71
+69
+66
+65
+63
+60
+57
+54
+52
+50
+47
+44
+42
+39
+36
+33
+30
+27
+24
+22
+19
+15
+12
+9
+6
+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
+3
+6
+9
+12
+16
+18
+21
+24
+27
+30
+34
+36
+39
+41
+44
+48
+49
+53
+55
+57
+61
+63
+66
+68
+70
+73
+75
+77
+79
+81
+82
+85
+87
+89
+90
+92
+93
+95
+97
+98
+99
+100
+101
+102
+103
+104
+104
+105
+105
+106
+106
+106
+106
+106
+106
+105
+106
+104
+104
+104
+102
+102
+101
+100
+99
+97
+96
+95
+93
+91
+91
+88
+87
+85
+83
+81
+79
+77
+75
+72
+71
+67
+65
+63
+60
+58
+55
+53
+50
+47
+44
+41
+39
+36
+33
+30
+27
+25
+21
+18
+15
+12
+9
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+11
+14
+18
+21
+24
+26
+30
+33
+35
+38
+42
+44
+47
+50
+53
+55
+58
+61
+63
+66
+68
+71
+73
+75
+77
+80
+82
+84
+87
+88
+90
+92
+94
+95
+97
+99
+100
+101
+103
+103
+105
+106
+107
+108
+108
+109
+109
+109
+110
+110
+110
+110
+110
+110
+109
+109
+108
+107
+106
+106
+105
+104
+102
+101
+100
+99
+97
+95
+94
+91
+90
+88
+86
+85
+82
+80
+77
+75
+73
+70
+69
+66
+63
+60
+58
+55
+53
+50
+47
+44
+41
+39
+36
+33
+30
+27
+24
+20
+18
+14
+12
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+7
+11
+14
+17
+20
+23
+26
+29
+33
+35
+38
+41
+44
+47
+50
+53
+55
+58
+61
+64
+66
+69
+71
+73
+77
+78
+81
+83
+86
+87
+90
+92
+93
+96
+97
+99
+100
+102
+103
+105
+107
+107
+108
+110
+110
+111
+112
+113
+113
+113
+114
+113
+113
+114
+113
+114
+113
+113
+112
+112
+110
+110
+108
+108
+106
+105
+104
+102
+100
+99
+97
+96
+94
+92
+90
+88
+85
+84
+81
+79
+76
+74
+71
+69
+66
+63
+61
+59
+55
+53
+50
+47
+44
+41
+39
+35
+32
+29
+26
+23
+20
+17
+13
+10
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+16
+19
+23
+26
+28
+32
+35
+38
+41
+44
+47
+50
+53
+56
+58
+61
+64
+67
+69
+72
+74
+77
+80
+82
+85
+86
+89
+91
+93
+95
+97
+99
+101
+103
+104
+106
+108
+108
+110
+111
+112
+114
+114
+115
+116
+117
+117
+117
+118
+118
+117
+118
+118
+117
+117
+116
+116
+115
+115
+113
+113
+111
+110
+108
+107
+106
+104
+102
+101
+99
+97
+95
+93
+91
+89
+86
+85
+82
+79
+76
+74
+72
+69
+66
+64
+61
+58
+56
+52
+49
+47
+44
+41
+38
+35
+31
+28
+26
+22
+19
+16
+12
+9
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+19
+21
+25
+28
+30
+34
+37
+40
+43
+47
+49
+52
+56
+58
+61
+63
+67
+70
+72
+75
+78
+80
+83
+85
+87
+90
+92
+94
+96
+99
+100
+102
+104
+106
+108
+109
+111
+112
+114
+115
+116
+117
+118
+119
+120
+120
+121
+121
+121
+121
+121
+122
+121
+122
+120
+120
+120
+119
+118
+118
+116
+115
+113
+112
+111
+109
+108
+106
+104
+102
+101
+98
+97
+94
+92
+90
+87
+85
+82
+80
+78
+75
+72
+70
+66
+64
+61
+58
+55
+52
+50
+46
+44
+40
+37
+34
+31
+27
+25
+21
+18
+15
+12
+9
+5
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+7
+11
+13
+17
+20
+23
+27
+30
+34
+37
+39
+43
+46
+48
+52
+55
+58
+61
+63
+66
+69
+72
+75
+77
+80
+83
+85
+88
+91
+93
+95
+97
+99
+102
+104
+106
+107
+110
+111
+113
+115
+116
+117
+119
+120
+121
+122
+123
+123
+124
+124
+125
+125
+125
+126
+125
+125
+125
+125
+124
+124
+122
+122
+120
+120
+118
+117
+116
+115
+112
+111
+109
+108
+105
+104
+102
+99
+97
+95
+93
+90
+88
+86
+83
+80
+77
+75
+72
+70
+66
+64
+61
+58
+54
+52
+48
+46
+43
+39
+36
+33
+30
+26
+23
+21
+17
+13
+10
+7
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+9
+12
+16
+19
+22
+25
+29
+32
+35
+39
+42
+45
+48
+51
+54
+57
+60
+63
+66
+70
+72
+75
+78
+81
+83
+86
+89
+90
+94
+96
+98
+101
+103
+105
+107
+109
+111
+113
+115
+116
+118
+119
+121
+122
+124
+125
+126
+127
+127
+128
+128
+129
+129
+129
+130
+129
+129
+129
+129
+128
+127
+126
+126
+124
+123
+122
+122
+119
+118
+116
+114
+113
+112
+109
+107
+105
+103
+101
+98
+96
+93
+91
+88
+86
+83
+81
+78
+75
+72
+69
+66
+63
+60
+57
+54
+51
+48
+45
+41
+38
+36
+32
+29
+26
+23
+19
+16
+13
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+8
+11
+14
+18
+21
+24
+28
+31
+34
+38
+41
+44
+47
+51
+53
+57
+60
+62
+66
+68
+72
+75
+78
+80
+83
+86
+89
+92
+93
+97
+99
+102
+104
+106
+109
+111
+112
+115
+116
+118
+120
+122
+124
+125
+126
+128
+128
+129
+131
+131
+132
+133
+133
+133
+134
+134
+133
+134
+133
+132
+132
+132
+130
+129
+129
+127
+126
+125
+123
+122
+120
+119
+116
+115
+112
+110
+108
+106
+104
+102
+99
+97
+94
+91
+89
+86
+83
+80
+78
+75
+72
+69
+66
+63
+60
+57
+53
+50
+47
+44
+41
+38
+34
+32
+28
+25
+21
+18
+15
+11
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+9
+13
+16
+20
+23
+27
+30
+33
+37
+40
+43
+46
+50
+53
+56
+59
+62
+65
+68
+72
+74
+77
+81
+83
+86
+89
+92
+94
+97
+100
+102
+105
+106
+109
+112
+114
+115
+118
+120
+122
+124
+125
+127
+129
+130
+131
+133
+134
+134
+135
+136
+136
+137
+137
+138
+137
+137
+137
+137
+137
+136
+135
+135
+133
+132
+131
+130
+128
+127
+125
+124
+122
+120
+118
+116
+114
+111
+109
+107
+105
+102
+100
+97
+95
+92
+89
+86
+83
+80
+77
+74
+71
+68
+66
+62
+59
+56
+53
+49
+46
+43
+39
+37
+33
+30
+27
+23
+20
+17
+13
+10
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+5
+8
+12
+15
+19
+22
+25
+29
+32
+35
+38
+42
+46
+48
+51
+55
+58
+61
+64
+68
+71
+74
+77
+80
+83
+86
+88
+91
+94
+97
+99
+103
+105
+108
+110
+113
+115
+117
+119
+121
+123
+125
+127
+129
+130
+132
+133
+135
+136
+137
+138
+139
+140
+140
+140
+141
+141
+141
+141
+141
+140
+140
+140
+138
+138
+137
+136
+135
+133
+132
+130
+128
+127
+125
+123
+121
+119
+117
+115
+113
+110
+108
+105
+103
+100
+97
+94
+92
+88
+86
+83
+80
+77
+74
+71
+68
+65
+62
+58
+55
+52
+48
+45
+42
+39
+36
+31
+29
+26
+22
+19
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+14
+17
+20
+24
+27
+30
+34
+37
+41
+44
+47
+51
+53
+57
+61
+64
+67
+70
+73
+76
+80
+82
+85
+88
+91
+94
+97
+100
+102
+105
+108
+110
+113
+116
+118
+121
+122
+125
+126
+128
+131
+133
+134
+135
+137
+139
+139
+141
+142
+143
+144
+144
+145
+145
+146
+146
+145
+145
+144
+145
+143
+142
+142
+141
+140
+139
+137
+135
+134
+132
+131
+128
+127
+125
+123
+120
+118
+116
+113
+110
+107
+105
+103
+100
+97
+95
+91
+89
+85
+82
+79
+76
+73
+70
+67
+63
+61
+57
+54
+50
+48
+44
+41
+37
+34
+30
+27
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+5
+8
+11
+15
+19
+21
+25
+29
+32
+36
+39
+43
+46
+50
+53
+56
+60
+63
+66
+69
+72
+76
+78
+82
+85
+87
+91
+94
+97
+100
+103
+106
+108
+111
+114
+116
+119
+121
+124
+126
+128
+130
+132
+134
+136
+138
+140
+141
+143
+143
+144
+145
+146
+147
+148
+148
+149
+149
+149
+149
+149
+148
+148
+148
+146
+146
+145
+144
+142
+141
+139
+138
+136
+134
+132
+130
+128
+126
+123
+121
+119
+116
+114
+111
+109
+105
+102
+99
+97
+94
+91
+88
+85
+81
+79
+76
+72
+69
+66
+63
+60
+56
+53
+49
+46
+43
+39
+36
+32
+29
+26
+22
+19
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+9
+13
+17
+20
+23
+27
+31
+34
+38
+41
+45
+48
+51
+55
+58
+61
+64
+68
+72
+74
+77
+81
+85
+87
+91
+93
+96
+99
+103
+106
+108
+111
+114
+116
+119
+121
+124
+126
+128
+131
+133
+136
+137
+139
+141
+143
+144
+146
+147
+148
+150
+151
+151
+152
+153
+153
+153
+153
+153
+152
+153
+152
+151
+151
+150
+149
+147
+146
+145
+143
+141
+140
+137
+136
+134
+131
+129
+126
+124
+121
+119
+116
+113
+110
+108
+105
+103
+99
+97
+93
+91
+88
+84
+81
+78
+74
+72
+68
+65
+61
+58
+55
+52
+48
+45
+41
+37
+34
+31
+27
+23
+20
+17
+13
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+18
+22
+25
+29
+33
+36
+39
+42
+46
+49
+53
+57
+60
+64
+66
+70
+74
+77
+80
+84
+86
+90
+93
+96
+99
+102
+105
+108
+111
+113
+116
+119
+122
+125
+127
+130
+132
+134
+136
+139
+141
+143
+145
+147
+148
+150
+151
+153
+153
+155
+155
+156
+156
+157
+157
+157
+157
+157
+156
+156
+155
+154
+153
+153
+151
+150
+148
+146
+144
+142
+140
+139
+136
+134
+131
+129
+127
+124
+122
+119
+117
+114
+111
+108
+105
+102
+99
+96
+93
+89
+86
+84
+80
+76
+73
+70
+67
+63
+60
+56
+54
+50
+46
+43
+39
+36
+32
+29
+25
+22
+18
+14
+11
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+9
+12
+16
+20
+24
+26
+31
+34
+38
+42
+45
+48
+52
+55
+59
+62
+65
+69
+72
+75
+79
+83
+86
+89
+92
+95
+98
+102
+104
+107
+111
+113
+116
+119
+122
+124
+128
+130
+133
+135
+137
+139
+142
+144
+146
+148
+150
+151
+153
+154
+156
+157
+158
+159
+160
+161
+161
+160
+161
+161
+161
+160
+160
+159
+158
+157
+156
+155
+154
+152
+150
+148
+147
+144
+142
+140
+137
+135
+133
+130
+128
+124
+122
+119
+116
+113
+111
+107
+104
+101
+98
+95
+92
+89
+85
+82
+79
+75
+72
+68
+65
+62
+58
+55
+52
+48
+45
+41
+38
+35
+30
+27
+23
+19
+16
+13
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+4
+7
+11
+14
+18
+22
+25
+28
+32
+36
+39
+43
+46
+50
+54
+57
+60
+64
+67
+71
+74
+77
+81
+84
+87
+91
+94
+98
+100
+104
+107
+110
+113
+116
+119
+122
+124
+127
+130
+133
+135
+139
+140
+143
+145
+147
+149
+152
+153
+155
+157
+158
+159
+161
+162
+163
+164
+164
+164
+164
+165
+165
+164
+165
+164
+162
+162
+161
+159
+158
+156
+155
+153
+152
+150
+147
+145
+142
+141
+138
+136
+133
+130
+127
+124
+122
+119
+116
+113
+110
+107
+104
+101
+97
+94
+91
+88
+84
+81
+77
+74
+71
+67
+64
+61
+57
+54
+50
+47
+43
+39
+36
+33
+28
+25
+22
+18
+14
+11
+6
+3
+0
+0
+0
+0
+0
+0
+1
+5
+9
+12
+16
+19
+23
+26
+30
+33
+38
+41
+44
+48
+51
+55
+58
+62
+66
+69
+73
+76
+80
+83
+86
+90
+93
+96
+99
+103
+106
+109
+112
+115
+118
+122
+125
+127
+130
+133
+136
+138
+141
+144
+146
+149
+150
+152
+154
+157
+158
+160
+162
+163
+165
+166
+166
+167
+168
+168
+169
+169
+168
+169
+168
+167
+167
+166
+165
+164
+162
+160
+158
+157
+155
+153
+150
+149
+146
+144
+141
+139
+136
+133
+130
+127
+124
+121
+118
+116
+113
+109
+106
+102
+99
+96
+93
+89
+86
+83
+80
+77
+73
+69
+66
+62
+59
+55
+51
+48
+44
+41
+37
+34
+31
+26
+23
+19
+16
+12
+8
+5
+1
+0
+0
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+28
+31
+35
+39
+43
+46
+50
+53
+57
+61
+63
+68
+71
+74
+78
+81
+85
+88
+92
+95
+99
+102
+105
+108
+112
+115
+118
+121
+124
+127
+130
+132
+136
+138
+142
+144
+146
+149
+151
+154
+157
+159
+160
+162
+164
+165
+167
+168
+169
+170
+171
+172
+172
+172
+172
+173
+173
+172
+172
+171
+169
+168
+167
+165
+164
+162
+160
+158
+156
+154
+152
+149
+147
+144
+142
+139
+136
+133
+131
+127
+124
+121
+118
+114
+112
+108
+105
+101
+98
+95
+92
+88
+85
+81
+78
+74
+71
+68
+64
+60
+57
+54
+49
+46
+43
+38
+35
+31
+28
+25
+21
+17
+13
+9
+6
+3
+0
+0
+0
+0
+0
+3
+7
+11
+14
+18
+22
+26
+29
+33
+37
+40
+44
+48
+51
+55
+58
+62
+66
+69
+73
+76
+80
+83
+86
+90
+94
+97
+100
+104
+107
+110
+114
+117
+120
+123
+127
+130
+133
+136
+139
+142
+144
+147
+150
+152
+155
+157
+159
+161
+163
+166
+168
+169
+171
+172
+173
+174
+175
+176
+176
+177
+177
+177
+176
+176
+175
+174
+174
+172
+170
+169
+167
+166
+164
+161
+159
+157
+154
+152
+149
+147
+144
+141
+138
+135
+133
+130
+127
+123
+120
+117
+114
+110
+107
+104
+101
+97
+93
+90
+87
+83
+80
+77
+73
+69
+66
+62
+58
+55
+51
+48
+44
+40
+37
+33
+30
+26
+22
+18
+15
+11
+7
+4
+0
+0
+0
+0
+1
+5
+8
+12
+16
+20
+23
+27
+30
+34
+38
+42
+45
+49
+53
+57
+60
+63
+67
+71
+75
+78
+81
+85
+89
+92
+95
+99
+102
+106
+109
+113
+116
+119
+122
+126
+128
+132
+135
+138
+141
+144
+147
+149
+153
+155
+157
+160
+163
+165
+167
+169
+171
+173
+174
+175
+177
+178
+178
+179
+181
+180
+180
+180
+180
+179
+178
+178
+177
+175
+174
+172
+171
+169
+167
+165
+163
+160
+158
+155
+152
+150
+147
+144
+141
+138
+135
+132
+129
+126
+122
+119
+116
+112
+109
+106
+102
+99
+96
+92
+88
+85
+82
+78
+74
+71
+68
+63
+60
+56
+52
+49
+45
+42
+38
+34
+30
+27
+24
+19
+16
+12
+9
+4
+1
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+28
+32
+35
+40
+43
+47
+51
+54
+58
+62
+65
+68
+72
+76
+79
+83
+87
+90
+93
+97
+101
+104
+108
+111
+114
+118
+121
+125
+128
+131
+134
+137
+141
+144
+147
+150
+153
+155
+158
+161
+163
+166
+168
+170
+172
+174
+177
+178
+179
+181
+182
+182
+184
+184
+184
+185
+185
+184
+184
+182
+182
+181
+179
+177
+176
+174
+172
+170
+168
+166
+163
+160
+158
+155
+152
+149
+147
+144
+140
+137
+134
+131
+128
+125
+121
+118
+115
+111
+108
+104
+101
+98
+94
+90
+87
+84
+80
+76
+72
+69
+65
+62
+58
+54
+50
+47
+43
+40
+36
+32
+29
+24
+21
+17
+13
+10
+6
+2
+0
+0
+0
+3
+7
+10
+15
+18
+22
+25
+30
+33
+37
+40
+45
+48
+52
+56
+59
+63
+67
+71
+74
+78
+81
+84
+88
+92
+95
+99
+102
+106
+109
+113
+117
+120
+124
+126
+130
+134
+137
+140
+143
+146
+150
+153
+155
+158
+161
+164
+166
+169
+171
+173
+176
+178
+179
+181
+183
+184
+186
+187
+187
+187
+188
+189
+189
+188
+187
+187
+186
+184
+183
+181
+180
+178
+175
+174
+171
+169
+166
+163
+160
+158
+155
+153
+149
+146
+143
+140
+137
+133
+130
+126
+123
+120
+116
+113
+110
+106
+103
+99
+95
+92
+88
+84
+82
+78
+73
+70
+66
+63
+59
+55
+52
+48
+45
+40
+37
+33
+29
+25
+22
+18
+14
+11
+7
+3
+0
+0
+0
+4
+8
+12
+15
+19
+23
+26
+31
+35
+38
+42
+46
+50
+53
+57
+61
+64
+67
+71
+75
+79
+83
+87
+90
+93
+97
+100
+104
+107
+112
+115
+119
+122
+125
+129
+132
+136
+139
+142
+145
+148
+152
+155
+158
+161
+164
+166
+169
+171
+174
+176
+179
+181
+183
+185
+186
+188
+190
+190
+191
+192
+192
+192
+193
+192
+191
+190
+189
+188
+187
+185
+183
+181
+179
+177
+174
+172
+169
+166
+164
+161
+158
+154
+151
+149
+145
+142
+138
+136
+132
+129
+125
+122
+118
+114
+111
+108
+105
+100
+97
+94
+89
+86
+82
+79
+76
+71
+68
+64
+60
+56
+53
+49
+46
+42
+39
+34
+31
+27
+23
+19
+16
+11
+8
+4
+1
+0
+1
+5
+9
+13
+16
+20
+24
+28
+32
+35
+39
+43
+47
+50
+55
+58
+61
+65
+69
+73
+77
+80
+84
+87
+91
+94
+99
+102
+106
+110
+113
+116
+120
+123
+127
+130
+134
+137
+140
+145
+148
+151
+154
+157
+160
+163
+166
+169
+172
+175
+177
+180
+182
+185
+186
+189
+190
+192
+193
+194
+195
+196
+196
+196
+196
+195
+195
+194
+193
+191
+190
+188
+187
+184
+182
+180
+177
+174
+171
+169
+166
+163
+160
+157
+153
+151
+148
+144
+140
+137
+134
+130
+127
+124
+121
+116
+113
+110
+105
+102
+98
+95
+91
+87
+84
+80
+77
+73
+69
+65
+62
+58
+54
+50
+46
+43
+39
+36
+32
+27
+24
+21
+17
+12
+9
+5
+2
+0
+2
+6
+9
+14
+17
+21
+25
+29
+32
+36
+40
+44
+48
+51
+55
+59
+63
+66
+70
+74
+78
+82
+85
+89
+92
+96
+100
+103
+108
+111
+114
+118
+121
+125
+128
+132
+136
+140
+143
+146
+149
+153
+156
+160
+162
+166
+169
+171
+174
+177
+180
+183
+185
+188
+189
+192
+194
+195
+197
+198
+199
+199
+200
+200
+200
+200
+199
+198
+197
+195
+194
+191
+190
+188
+185
+182
+180
+177
+175
+172
+169
+166
+163
+159
+156
+153
+150
+146
+143
+140
+136
+132
+129
+126
+121
+118
+115
+111
+107
+103
+100
+97
+93
+89
+85
+81
+78
+74
+71
+66
+63
+60
+55
+51
+47
+44
+40
+36
+32
+29
+25
+21
+17
+14
+10
+6
+2
+0
+3
+7
+11
+15
+18
+22
+26
+29
+33
+37
+41
+45
+49
+53
+56
+60
+63
+68
+72
+75
+79
+83
+87
+90
+94
+97
+101
+105
+109
+113
+116
+119
+124
+127
+131
+134
+137
+141
+145
+148
+152
+155
+158
+162
+165
+168
+171
+175
+177
+180
+183
+185
+188
+191
+193
+195
+197
+199
+200
+201
+203
+203
+204
+204
+204
+203
+202
+202
+200
+199
+197
+195
+193
+190
+188
+186
+183
+180
+177
+174
+171
+168
+165
+162
+158
+155
+151
+148
+144
+142
+138
+134
+131
+127
+123
+119
+116
+113
+109
+105
+102
+98
+94
+90
+86
+83
+79
+76
+71
+68
+64
+60
+56
+53
+49
+45
+41
+38
+34
+30
+26
+22
+18
+14
+10
+7
+3
+0
+4
+7
+11
+16
+19
+23
+26
+31
+35
+38
+42
+46
+49
+53
+57
+61
+65
+69
+72
+77
+80
+84
+87
+92
+96
+99
+102
+106
+110
+113
+117
+122
+124
+128
+132
+135
+139
+143
+146
+150
+153
+157
+160
+163
+167
+170
+173
+177
+180
+183
+186
+188
+191
+194
+196
+199
+200
+203
+204
+206
+207
+207
+208
+208
+208
+208
+206
+206
+204
+203
+201
+198
+196
+194
+191
+189
+186
+183
+180
+177
+174
+170
+167
+164
+160
+157
+153
+150
+146
+143
+140
+135
+132
+128
+125
+121
+117
+113
+110
+106
+103
+99
+95
+92
+88
+84
+80
+76
+72
+69
+64
+62
+57
+53
+50
+46
+42
+38
+35
+30
+27
+23
+19
+15
+11
+8
+3
+1
+4
+8
+12
+16
+20
+23
+28
+31
+36
+39
+43
+47
+51
+54
+59
+62
+66
+70
+74
+78
+81
+85
+89
+93
+96
+100
+104
+108
+111
+115
+119
+122
+126
+130
+134
+137
+140
+144
+148
+152
+155
+159
+162
+165
+169
+173
+176
+179
+183
+185
+189
+191
+194
+197
+199
+201
+204
+206
+208
+209
+211
+211
+212
+212
+212
+212
+210
+209
+208
+206
+204
+201
+199
+197
+194
+191
+188
+185
+182
+179
+175
+173
+169
+166
+162
+159
+155
+151
+148
+144
+140
+137
+134
+130
+126
+122
+119
+115
+112
+107
+104
+100
+96
+92
+89
+85
+81
+77
+73
+70
+66
+62
+58
+54
+50
+47
+43
+39
+36
+32
+28
+24
+20
+16
+12
+8
+5
+2
+6
+9
+13
+16
+21
+25
+28
+32
+36
+40
+44
+47
+51
+55
+59
+63
+66
+71
+74
+78
+82
+86
+89
+93
+97
+101
+104
+108
+113
+116
+120
+124
+128
+131
+135
+139
+142
+145
+149
+153
+156
+160
+164
+168
+171
+174
+178
+181
+184
+187
+191
+194
+196
+200
+202
+205
+208
+210
+211
+213
+214
+215
+216
+216
+215
+215
+214
+213
+211
+209
+207
+205
+202
+199
+197
+194
+191
+187
+185
+181
+178
+174
+170
+168
+164
+160
+157
+154
+149
+145
+142
+139
+135
+131
+128
+124
+120
+116
+112
+108
+104
+101
+98
+94
+90
+86
+82
+78
+74
+70
+67
+63
+59
+55
+51
+47
+43
+40
+36
+32
+28
+24
+21
+17
+13
+9
+5
+1
+5
+10
+13
+17
+21
+25
+29
+33
+37
+40
+45
+48
+52
+56
+60
+63
+67
+71
+75
+79
+83
+87
+90
+94
+98
+102
+106
+109
+113
+117
+121
+124
+128
+132
+136
+139
+143
+147
+151
+155
+158
+162
+165
+169
+172
+176
+179
+183
+187
+190
+193
+196
+199
+202
+205
+208
+210
+213
+215
+216
+218
+219
+219
+220
+219
+219
+218
+217
+215
+213
+211
+207
+205
+202
+200
+197
+193
+190
+187
+183
+179
+176
+172
+169
+165
+162
+158
+155
+151
+148
+143
+140
+136
+132
+128
+124
+121
+117
+113
+110
+106
+102
+98
+94
+90
+87
+83
+79
+76
+72
+67
+64
+60
+56
+52
+48
+45
+40
+37
+32
+29
+25
+21
+17
+13
+10
+6
+3
+7
+10
+14
+18
+21
+26
+30
+33
+37
+41
+45
+49
+52
+56
+61
+64
+68
+72
+76
+80
+84
+87
+92
+95
+99
+103
+107
+110
+114
+118
+121
+125
+130
+133
+137
+141
+145
+148
+152
+155
+160
+163
+167
+171
+174
+178
+181
+185
+189
+192
+195
+198
+202
+205
+208
+211
+214
+216
+218
+220
+222
+222
+224
+223
+224
+223
+221
+220
+218
+216
+213
+211
+208
+205
+202
+199
+195
+192
+188
+185
+181
+178
+174
+171
+167
+164
+159
+156
+152
+149
+145
+141
+138
+133
+129
+126
+122
+118
+114
+110
+107
+103
+99
+96
+91
+87
+84
+80
+75
+72
+69
+64
+61
+57
+53
+49
+45
+41
+37
+34
+30
+26
+22
+18
+13
+10
+6
+2
+7
+10
+14
+18
+22
+26
+30
+34
+38
+41
+46
+49
+54
+57
+61
+65
+68
+73
+76
+81
+84
+88
+92
+96
+100
+103
+107
+111
+115
+119
+123
+127
+130
+134
+138
+142
+146
+150
+153
+157
+161
+164
+168
+172
+175
+180
+183
+186
+190
+193
+197
+200
+204
+208
+211
+214
+217
+219
+222
+223
+225
+226
+227
+228
+227
+227
+225
+223
+222
+219
+216
+214
+211
+207
+204
+200
+197
+194
+190
+187
+183
+179
+175
+172
+168
+164
+161
+157
+153
+150
+145
+142
+138
+134
+130
+126
+123
+118
+115
+111
+107
+103
+100
+96
+92
+88
+85
+80
+76
+73
+69
+65
+61
+57
+53
+49
+45
+41
+37
+34
+29
+27
+22
+18
+15
+10
+7
+3
+7
+11
+15
+19
+22
+27
+30
+34
+38
+42
+46
+50
+53
+58
+62
+66
+70
+73
+77
+81
+85
+89
+93
+97
+101
+104
+109
+112
+116
+119
+123
+128
+132
+135
+139
+143
+146
+151
+154
+158
+161
+165
+169
+173
+177
+181
+185
+188
+191
+196
+199
+203
+206
+209
+212
+215
+219
+222
+224
+226
+229
+231
+231
+231
+231
+230
+229
+226
+224
+221
+219
+216
+212
+209
+206
+203
+199
+195
+191
+188
+184
+180
+177
+174
+170
+166
+162
+158
+155
+151
+146
+142
+139
+135
+131
+127
+123
+119
+116
+112
+109
+104
+100
+96
+92
+89
+85
+81
+78
+73
+70
+66
+62
+57
+54
+50
+46
+42
+39
+34
+31
+27
+23
+19
+15
+11
+7
+3
+7
+11
+15
+19
+23
+27
+31
+34
+39
+43
+46
+51
+54
+58
+62
+66
+70
+73
+78
+82
+86
+90
+93
+97
+101
+105
+109
+113
+116
+120
+124
+128
+132
+136
+139
+143
+147
+152
+155
+159
+163
+167
+170
+175
+178
+182
+185
+189
+193
+197
+200
+205
+207
+211
+215
+218
+221
+225
+227
+229
+232
+234
+235
+235
+235
+234
+232
+230
+227
+225
+221
+218
+215
+211
+207
+204
+200
+197
+193
+189
+185
+181
+178
+175
+170
+166
+163
+159
+155
+152
+147
+144
+140
+135
+132
+128
+124
+120
+116
+112
+108
+105
+101
+97
+93
+89
+85
+82
+78
+74
+69
+66
+62
+58
+54
+51
+46
+42
+39
+35
+31
+27
+23
+19
+15
+11
+7
+4
+7
+12
+16
+19
+24
+28
+31
+35
+39
+43
+46
+51
+55
+59
+63
+66
+70
+74
+78
+82
+86
+90
+93
+97
+102
+105
+110
+113
+117
+121
+125
+129
+133
+136
+140
+144
+148
+152
+156
+159
+163
+168
+171
+175
+179
+183
+187
+191
+194
+198
+202
+205
+209
+213
+216
+220
+224
+227
+230
+233
+235
+237
+239
+239
+239
+237
+235
+232
+230
+226
+224
+220
+217
+213
+209
+205
+201
+198
+194
+190
+186
+183
+179
+175
+171
+167
+164
+160
+156
+152
+148
+144
+141
+137
+132
+129
+125
+121
+117
+113
+109
+105
+101
+98
+94
+90
+85
+82
+78
+74
+70
+66
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+19
+15
+12
+7
+4
+8
+12
+15
+19
+23
+27
+31
+36
+39
+43
+47
+51
+55
+59
+63
+67
+70
+75
+78
+82
+86
+90
+94
+97
+102
+106
+110
+113
+117
+122
+125
+129
+133
+137
+141
+144
+148
+152
+156
+160
+164
+168
+171
+175
+180
+183
+188
+191
+195
+199
+203
+207
+210
+214
+218
+222
+225
+229
+232
+235
+238
+241
+242
+243
+242
+241
+238
+235
+232
+228
+225
+222
+218
+214
+210
+206
+203
+199
+195
+192
+187
+183
+180
+176
+172
+168
+164
+160
+156
+152
+148
+145
+141
+137
+133
+129
+126
+122
+117
+113
+109
+105
+102
+98
+93
+90
+86
+82
+79
+75
+70
+67
+63
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+28
+32
+36
+39
+44
+47
+51
+55
+59
+63
+67
+70
+74
+79
+83
+87
+91
+94
+98
+102
+106
+110
+114
+117
+122
+125
+129
+133
+138
+141
+145
+149
+153
+156
+161
+165
+168
+172
+176
+180
+184
+188
+191
+195
+199
+203
+207
+212
+215
+219
+222
+226
+230
+234
+237
+241
+244
+246
+247
+246
+244
+240
+237
+234
+230
+227
+222
+219
+215
+212
+208
+204
+200
+196
+192
+188
+184
+181
+176
+173
+168
+165
+160
+157
+153
+149
+145
+141
+137
+133
+129
+125
+121
+117
+114
+110
+106
+102
+98
+94
+90
+86
+83
+78
+74
+71
+67
+63
+59
+55
+51
+47
+43
+40
+35
+31
+28
+24
+19
+15
+12
+8
+4
+8
+12
+16
+20
+23
+28
+31
+36
+39
+44
+47
+51
+55
+59
+63
+67
+71
+75
+79
+83
+86
+91
+95
+98
+102
+106
+110
+114
+118
+121
+126
+130
+134
+137
+141
+145
+149
+153
+157
+160
+165
+169
+173
+177
+180
+185
+188
+193
+196
+200
+204
+207
+211
+215
+219
+223
+227
+232
+235
+239
+243
+246
+249
+252
+250
+247
+243
+239
+235
+231
+227
+223
+220
+215
+212
+208
+204
+200
+196
+192
+188
+185
+181
+177
+172
+169
+165
+161
+157
+153
+149
+145
+141
+137
+134
+129
+126
+121
+118
+114
+110
+106
+102
+98
+94
+91
+86
+83
+79
+74
+71
+67
+63
+59
+55
+52
+47
+43
+39
+36
+31
+28
+24
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+27
+31
+36
+40
+43
+47
+51
+55
+59
+62
+67
+70
+75
+78
+83
+87
+90
+95
+98
+102
+106
+110
+114
+118
+122
+126
+130
+133
+138
+141
+145
+149
+153
+157
+161
+165
+169
+173
+176
+181
+184
+189
+193
+196
+200
+204
+208
+212
+216
+220
+224
+227
+231
+235
+239
+243
+247
+251
+255
+251
+247
+243
+240
+236
+232
+227
+224
+219
+216
+212
+208
+204
+200
+196
+192
+189
+184
+180
+177
+173
+169
+165
+161
+157
+153
+149
+145
+142
+138
+134
+130
+126
+122
+117
+114
+110
+106
+102
+98
+95
+90
+86
+83
+78
+75
+71
+67
+63
+59
+55
+51
+47
+43
+39
+36
+32
+27
+24
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+28
+32
+36
+39
+43
+47
+51
+55
+59
+63
+66
+70
+75
+78
+83
+86
+90
+94
+99
+102
+106
+110
+114
+118
+122
+126
+130
+133
+137
+142
+145
+149
+153
+157
+161
+164
+168
+173
+176
+180
+184
+188
+192
+196
+200
+203
+208
+211
+216
+220
+223
+227
+231
+235
+239
+243
+246
+249
+251
+249
+246
+243
+238
+235
+231
+228
+224
+219
+215
+212
+208
+204
+200
+196
+192
+188
+184
+181
+177
+172
+168
+165
+161
+157
+153
+149
+145
+141
+138
+133
+129
+126
+122
+118
+114
+110
+106
+102
+98
+94
+91
+86
+82
+79
+75
+70
+66
+63
+59
+55
+51
+47
+43
+39
+36
+32
+28
+24
+20
+16
+12
+9
+4
+8
+12
+15
+20
+23
+28
+32
+35
+39
+43
+47
+51
+55
+59
+63
+67
+70
+75
+79
+82
+86
+90
+94
+98
+102
+105
+110
+114
+118
+121
+125
+130
+133
+138
+141
+145
+149
+153
+156
+161
+165
+168
+172
+177
+180
+184
+188
+192
+196
+199
+203
+207
+211
+215
+219
+222
+227
+230
+234
+237
+241
+244
+246
+247
+246
+244
+241
+237
+234
+231
+226
+222
+218
+215
+211
+207
+204
+200
+195
+192
+188
+184
+181
+176
+173
+168
+165
+161
+157
+153
+149
+145
+141
+138
+133
+130
+125
+122
+117
+114
+109
+106
+102
+98
+94
+90
+86
+83
+79
+74
+71
+67
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+24
+19
+16
+12
+8
+4
+8
+12
+16
+19
+23
+27
+31
+35
+39
+43
+47
+50
+55
+59
+63
+67
+70
+74
+79
+82
+86
+90
+94
+98
+102
+105
+110
+113
+118
+121
+125
+129
+133
+137
+141
+145
+149
+152
+156
+160
+164
+168
+172
+176
+180
+184
+188
+191
+195
+199
+202
+207
+211
+214
+217
+221
+225
+229
+232
+236
+239
+241
+242
+244
+242
+241
+238
+235
+232
+229
+226
+222
+218
+214
+210
+206
+202
+199
+195
+191
+188
+183
+180
+176
+171
+168
+164
+160
+157
+152
+148
+145
+141
+137
+133
+129
+125
+121
+118
+114
+109
+106
+102
+98
+94
+90
+86
+82
+79
+75
+70
+66
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+27
+31
+35
+39
+43
+47
+50
+54
+59
+62
+66
+70
+74
+78
+82
+85
+90
+93
+98
+101
+105
+109
+113
+117
+121
+124
+128
+133
+136
+140
+144
+148
+152
+155
+160
+163
+167
+171
+176
+179
+183
+187
+190
+194
+198
+201
+206
+209
+213
+216
+220
+223
+227
+230
+233
+236
+237
+238
+239
+238
+237
+236
+233
+230
+227
+223
+220
+216
+212
+209
+205
+202
+198
+194
+190
+186
+182
+179
+175
+171
+167
+164
+160
+156
+152
+148
+144
+140
+136
+132
+129
+125
+121
+117
+113
+109
+105
+101
+98
+93
+89
+86
+82
+78
+74
+70
+66
+62
+59
+54
+51
+47
+43
+39
+35
+31
+27
+23
+20
+15
+12
+7
+4
+8
+11
+15
+19
+23
+27
+31
+34
+39
+43
+47
+50
+54
+58
+62
+66
+70
+73
+77
+82
+85
+89
+93
+97
+101
+105
+109
+113
+116
+120
+124
+128
+132
+136
+139
+143
+148
+151
+155
+158
+163
+167
+170
+174
+178
+182
+185
+190
+193
+197
+201
+204
+207
+211
+214
+218
+222
+224
+227
+229
+232
+234
+235
+236
+235
+234
+232
+230
+228
+224
+221
+218
+215
+211
+207
+204
+200
+197
+193
+189
+186
+182
+178
+174
+171
+166
+162
+159
+155
+151
+148
+143
+140
+135
+132
+128
+124
+120
+117
+113
+109
+104
+101
+97
+93
+89
+86
+81
+78
+73
+69
+66
+62
+58
+55
+51
+46
+42
+39
+35
+31
+27
+23
+19
+15
+12
+7
+3
+7
+11
+14
+19
+23
+26
+30
+34
+38
+42
+46
+50
+53
+58
+61
+66
+69
+74
+77
+81
+84
+89
+93
+97
+101
+104
+108
+112
+116
+119
+124
+128
+131
+135
+139
+142
+146
+151
+154
+158
+162
+165
+170
+174
+177
+181
+185
+188
+192
+196
+199
+202
+206
+209
+213
+216
+219
+222
+224
+227
+228
+230
+232
+232
+231
+231
+229
+227
+225
+222
+219
+216
+213
+209
+205
+202
+199
+196
+192
+188
+185
+180
+176
+173
+169
+166
+162
+158
+154
+151
+146
+143
+139
+135
+131
+127
+124
+120
+116
+112
+108
+105
+100
+96
+92
+89
+85
+81
+77
+73
+69
+65
+61
+58
+54
+50
+46
+42
+38
+34
+30
+26
+23
+19
+14
+10
+6
+2
+6
+11
+15
+18
+22
+26
+30
+34
+37
+42
+46
+50
+53
+57
+61
+65
+69
+73
+76
+80
+84
+88
+92
+96
+100
+103
+107
+112
+115
+119
+122
+126
+131
+134
+138
+142
+146
+149
+153
+157
+161
+164
+169
+172
+176
+179
+183
+186
+190
+194
+197
+200
+204
+208
+210
+214
+216
+219
+222
+224
+225
+227
+227
+228
+227
+226
+225
+224
+221
+219
+217
+214
+210
+207
+204
+201
+197
+194
+190
+186
+183
+180
+176
+172
+169
+164
+160
+157
+153
+150
+146
+142
+138
+134
+131
+126
+123
+119
+115
+111
+107
+103
+99
+96
+92
+88
+84
+80
+76
+73
+69
+65
+61
+57
+54
+49
+45
+42
+37
+34
+30
+26
+23
+18
+14
+11
+7
+2
+6
+10
+14
+18
+22
+26
+29
+33
+38
+41
+45
+49
+53
+56
+60
+64
+68
+72
+76
+79
+84
+87
+91
+95
+99
+103
+106
+111
+114
+119
+122
+126
+129
+133
+137
+141
+145
+149
+152
+155
+160
+163
+167
+170
+175
+178
+182
+185
+188
+191
+196
+198
+201
+205
+208
+210
+213
+216
+218
+220
+222
+222
+223
+224
+224
+222
+222
+220
+218
+215
+213
+210
+208
+205
+201
+198
+195
+192
+188
+185
+181
+178
+174
+171
+167
+163
+160
+156
+152
+149
+145
+141
+137
+134
+130
+126
+122
+118
+115
+110
+106
+103
+99
+95
+91
+88
+84
+80
+76
+72
+68
+64
+60
+57
+53
+48
+45
+41
+38
+33
+29
+25
+22
+17
+14
+10
+6
+2
+5
+9
+13
+18
+22
+25
+29
+33
+36
+41
+44
+49
+52
+56
+60
+64
+67
+72
+75
+79
+83
+87
+91
+94
+98
+102
+106
+109
+114
+117
+121
+125
+129
+132
+136
+140
+144
+147
+151
+155
+158
+162
+165
+169
+173
+177
+179
+183
+187
+190
+193
+196
+199
+202
+205
+207
+210
+213
+215
+216
+218
+218
+220
+220
+220
+218
+218
+216
+214
+213
+210
+208
+205
+202
+199
+197
+193
+190
+187
+183
+180
+176
+172
+169
+165
+162
+159
+154
+151
+147
+144
+140
+136
+133
+129
+125
+121
+117
+114
+109
+106
+102
+98
+94
+91
+87
+83
+79
+76
+71
+67
+63
+60
+56
+52
+48
+44
+40
+36
+32
+29
+25
+21
+17
+13
+9
+5
+1
+5
+8
+13
+17
+21
+25
+28
+32
+36
+39
+44
+48
+51
+55
+59
+63
+67
+70
+74
+78
+82
+86
+90
+94
+97
+102
+105
+108
+112
+116
+120
+124
+127
+131
+135
+139
+142
+146
+149
+153
+157
+161
+164
+167
+171
+175
+177
+181
+184
+188
+191
+194
+197
+200
+202
+205
+207
+209
+211
+213
+214
+215
+215
+216
+216
+215
+214
+212
+211
+209
+207
+205
+202
+200
+197
+194
+191
+188
+184
+181
+177
+174
+171
+167
+164
+161
+156
+153
+150
+146
+142
+138
+134
+131
+128
+123
+120
+116
+112
+108
+105
+101
+98
+94
+89
+86
+82
+78
+75
+70
+67
+63
+59
+55
+51
+48
+44
+39
+36
+32
+28
+24
+20
+17
+12
+9
+5
+1
+5
+9
+12
+16
+20
+24
+27
+31
+35
+39
+43
+47
+50
+54
+58
+62
+65
+70
+74
+77
+81
+85
+88
+92
+96
+100
+104
+107
+112
+115
+118
+122
+126
+130
+133
+137
+140
+144
+148
+151
+155
+159
+162
+166
+169
+173
+175
+179
+183
+185
+188
+191
+194
+197
+199
+201
+204
+206
+208
+209
+210
+211
+212
+212
+212
+211
+210
+209
+207
+206
+204
+201
+199
+197
+194
+191
+189
+186
+182
+179
+176
+172
+169
+165
+162
+158
+155
+151
+148
+145
+140
+138
+133
+130
+126
+123
+119
+115
+111
+107
+103
+100
+96
+93
+89
+85
+81
+77
+74
+69
+65
+62
+58
+54
+51
+47
+42
+39
+35
+32
+27
+24
+20
+16
+13
+8
+4
+0
+3
+8
+12
+16
+19
+23
+27
+31
+35
+38
+42
+45
+49
+54
+57
+61
+65
+69
+72
+76
+80
+84
+88
+91
+96
+99
+103
+106
+110
+114
+118
+121
+125
+128
+132
+135
+140
+143
+146
+150
+153
+157
+160
+163
+167
+170
+174
+177
+179
+183
+186
+188
+191
+194
+197
+198
+201
+202
+204
+206
+207
+207
+208
+208
+208
+207
+207
+205
+204
+203
+200
+199
+196
+194
+191
+188
+185
+183
+180
+176
+174
+170
+167
+163
+160
+156
+154
+149
+147
+143
+139
+135
+132
+129
+125
+121
+117
+113
+110
+106
+102
+99
+96
+91
+87
+84
+80
+76
+73
+68
+65
+61
+57
+54
+49
+46
+42
+39
+34
+31
+26
+23
+19
+15
+12
+7
+4
+0
+3
+6
+11
+15
+18
+23
+26
+30
+34
+37
+41
+44
+49
+52
+57
+61
+64
+68
+71
+75
+79
+83
+86
+90
+94
+98
+101
+105
+108
+113
+116
+120
+123
+127
+130
+134
+137
+141
+145
+148
+152
+155
+158
+162
+165
+168
+171
+174
+177
+180
+183
+186
+189
+191
+193
+195
+197
+199
+201
+202
+203
+203
+204
+204
+204
+203
+203
+202
+201
+199
+197
+195
+193
+191
+188
+186
+183
+180
+177
+174
+171
+168
+164
+162
+158
+155
+151
+148
+144
+141
+137
+134
+130
+127
+123
+120
+116
+112
+108
+105
+101
+98
+94
+90
+87
+83
+79
+75
+71
+68
+64
+60
+57
+53
+49
+45
+42
+38
+33
+29
+26
+22
+18
+15
+11
+7
+3
+0
+2
+5
+10
+14
+17
+21
+25
+29
+33
+36
+40
+44
+48
+52
+55
+59
+63
+67
+70
+74
+78
+81
+85
+89
+93
+96
+100
+104
+108
+111
+114
+118
+122
+125
+129
+132
+135
+140
+143
+146
+149
+153
+156
+160
+162
+166
+168
+172
+174
+177
+180
+182
+186
+188
+190
+191
+194
+195
+196
+198
+199
+200
+200
+201
+200
+200
+199
+198
+197
+195
+194
+191
+189
+187
+185
+183
+180
+177
+174
+171
+168
+166
+162
+160
+156
+153
+149
+147
+143
+139
+135
+132
+129
+125
+122
+119
+114
+111
+108
+103
+100
+96
+93
+89
+85
+81
+78
+74
+70
+67
+63
+59
+55
+52
+48
+44
+40
+37
+33
+28
+25
+22
+18
+14
+10
+6
+2
+0
+1
+5
+9
+13
+17
+21
+24
+28
+32
+35
+39
+42
+47
+51
+54
+58
+61
+65
+69
+72
+77
+80
+84
+88
+91
+95
+99
+102
+106
+109
+113
+117
+120
+123
+127
+130
+134
+138
+141
+144
+148
+150
+154
+157
+160
+163
+166
+169
+172
+174
+177
+179
+182
+185
+186
+188
+190
+192
+193
+195
+195
+196
+196
+197
+196
+196
+195
+194
+193
+191
+190
+188
+186
+184
+182
+180
+177
+174
+171
+169
+166
+163
+160
+157
+154
+150
+148
+144
+141
+137
+134
+130
+127
+124
+120
+116
+113
+109
+106
+102
+98
+94
+91
+87
+84
+81
+76
+73
+69
+65
+61
+58
+54
+50
+47
+43
+39
+35
+31
+28
+24
+20
+17
+13
+9
+5
+1
+0
+0
+4
+8
+11
+16
+19
+23
+26
+30
+34
+39
+42
+45
+49
+53
+57
+60
+64
+68
+72
+75
+79
+83
+86
+89
+93
+97
+101
+104
+107
+111
+115
+118
+122
+125
+129
+132
+136
+139
+142
+145
+148
+151
+155
+157
+161
+164
+166
+169
+171
+174
+176
+179
+181
+183
+185
+186
+188
+189
+191
+191
+192
+192
+193
+192
+192
+191
+190
+190
+188
+187
+184
+183
+181
+179
+177
+174
+172
+169
+166
+163
+161
+158
+155
+152
+148
+145
+142
+139
+135
+132
+129
+125
+122
+118
+115
+111
+108
+104
+100
+97
+93
+89
+86
+83
+79
+75
+71
+68
+64
+61
+57
+53
+49
+46
+42
+38
+35
+31
+27
+23
+19
+15
+11
+8
+4
+0
+0
+0
+3
+7
+10
+14
+18
+22
+25
+29
+33
+37
+40
+44
+48
+52
+55
+60
+63
+66
+71
+74
+77
+81
+85
+88
+92
+95
+99
+102
+106
+110
+113
+117
+120
+123
+127
+130
+134
+137
+140
+143
+146
+149
+152
+155
+158
+161
+163
+166
+169
+171
+173
+176
+178
+179
+182
+183
+184
+186
+187
+187
+188
+188
+188
+188
+188
+187
+186
+186
+184
+183
+181
+179
+178
+175
+173
+171
+169
+166
+164
+161
+158
+155
+153
+150
+146
+143
+139
+136
+134
+130
+126
+124
+120
+116
+113
+109
+106
+102
+99
+96
+91
+89
+85
+81
+78
+74
+70
+66
+63
+59
+56
+52
+48
+44
+41
+37
+33
+30
+26
+22
+18
+15
+11
+7
+3
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+29
+32
+36
+39
+43
+47
+50
+54
+58
+61
+65
+69
+73
+76
+80
+83
+86
+90
+94
+97
+101
+105
+107
+111
+114
+118
+121
+124
+128
+131
+134
+138
+140
+144
+147
+150
+153
+155
+158
+160
+163
+166
+168
+170
+172
+174
+176
+177
+179
+180
+181
+183
+184
+184
+184
+184
+184
+184
+184
+183
+181
+181
+179
+177
+176
+174
+172
+170
+168
+166
+163
+160
+158
+155
+153
+149
+146
+143
+141
+138
+135
+131
+128
+124
+121
+118
+115
+111
+108
+105
+100
+97
+94
+90
+86
+84
+80
+75
+73
+69
+65
+61
+57
+54
+51
+47
+43
+40
+35
+32
+28
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+1
+5
+8
+12
+16
+19
+23
+27
+31
+35
+38
+41
+46
+49
+53
+56
+60
+64
+67
+71
+75
+78
+81
+85
+89
+92
+96
+99
+102
+105
+109
+112
+116
+119
+122
+126
+128
+132
+135
+138
+141
+144
+147
+150
+153
+155
+157
+160
+162
+164
+167
+169
+171
+173
+175
+176
+177
+178
+179
+179
+180
+180
+180
+181
+180
+179
+179
+178
+177
+175
+174
+172
+171
+169
+167
+164
+162
+160
+158
+155
+152
+149
+146
+144
+141
+138
+135
+132
+129
+125
+123
+119
+116
+112
+109
+106
+102
+99
+95
+92
+88
+85
+82
+78
+74
+71
+67
+63
+60
+56
+53
+49
+46
+42
+38
+35
+31
+27
+23
+20
+16
+12
+8
+5
+1
+0
+0
+0
+0
+3
+7
+11
+15
+18
+22
+26
+29
+33
+37
+41
+44
+47
+51
+55
+59
+62
+66
+70
+72
+76
+80
+83
+87
+90
+93
+97
+101
+103
+107
+111
+113
+117
+121
+124
+126
+130
+133
+136
+138
+141
+144
+147
+149
+152
+155
+157
+159
+162
+163
+165
+167
+169
+171
+172
+173
+174
+175
+176
+176
+176
+177
+177
+176
+176
+175
+174
+173
+172
+170
+169
+167
+165
+163
+162
+159
+157
+155
+152
+149
+147
+144
+141
+138
+136
+133
+129
+127
+123
+120
+117
+114
+110
+107
+104
+101
+97
+94
+91
+87
+83
+80
+76
+72
+69
+65
+62
+59
+55
+51
+48
+44
+40
+37
+33
+29
+26
+22
+18
+15
+11
+8
+3
+0
+0
+0
+0
+0
+3
+5
+10
+14
+17
+20
+24
+28
+32
+35
+39
+42
+46
+50
+54
+57
+60
+64
+67
+71
+74
+78
+82
+84
+88
+91
+95
+99
+102
+105
+108
+112
+114
+117
+121
+124
+128
+130
+133
+136
+139
+141
+144
+147
+149
+151
+154
+156
+158
+160
+163
+164
+165
+167
+169
+169
+170
+171
+172
+173
+173
+173
+173
+172
+172
+171
+170
+170
+169
+167
+166
+164
+162
+160
+158
+156
+154
+151
+149
+146
+144
+142
+139
+136
+133
+130
+127
+124
+121
+118
+114
+111
+108
+105
+102
+99
+95
+92
+89
+84
+81
+78
+75
+71
+68
+64
+61
+57
+53
+50
+46
+42
+39
+35
+32
+28
+24
+20
+17
+14
+9
+6
+2
+0
+0
+0
+0
+0
+1
+4
+8
+12
+16
+19
+23
+26
+30
+34
+37
+41
+45
+48
+52
+56
+58
+62
+66
+69
+73
+76
+80
+83
+87
+90
+93
+97
+100
+103
+106
+110
+112
+116
+118
+121
+124
+127
+131
+133
+136
+138
+141
+144
+146
+148
+151
+153
+155
+157
+159
+161
+161
+163
+165
+165
+167
+167
+168
+169
+169
+168
+168
+168
+168
+167
+166
+166
+165
+163
+162
+160
+159
+157
+155
+153
+151
+148
+146
+144
+141
+139
+136
+133
+131
+127
+125
+122
+118
+115
+113
+109
+106
+103
+100
+96
+93
+90
+86
+83
+80
+76
+72
+69
+66
+63
+59
+55
+52
+48
+45
+41
+38
+33
+30
+27
+23
+20
+16
+12
+9
+4
+0
+0
+0
+0
+0
+0
+0
+3
+6
+11
+14
+17
+21
+25
+29
+32
+36
+39
+43
+47
+50
+53
+57
+61
+63
+67
+71
+74
+77
+81
+84
+88
+91
+94
+97
+101
+103
+107
+110
+113
+116
+119
+122
+125
+128
+130
+133
+135
+138
+141
+143
+145
+148
+149
+152
+154
+155
+157
+158
+159
+161
+162
+162
+163
+164
+165
+165
+165
+165
+164
+164
+164
+163
+162
+160
+159
+158
+157
+156
+153
+152
+149
+147
+146
+143
+140
+138
+136
+133
+130
+127
+125
+122
+119
+116
+113
+109
+107
+103
+100
+97
+94
+90
+88
+84
+81
+77
+74
+71
+67
+64
+60
+57
+53
+50
+47
+43
+39
+36
+32
+28
+25
+22
+18
+15
+11
+7
+3
+0
+0
+0
+0
+0
+0
+0
+2
+6
+10
+13
+16
+20
+24
+27
+30
+34
+37
+42
+44
+48
+52
+55
+59
+62
+65
+68
+73
+76
+79
+82
+86
+89
+92
+95
+99
+101
+104
+108
+111
+114
+116
+119
+122
+125
+128
+130
+132
+135
+137
+139
+142
+144
+146
+148
+150
+151
+153
+155
+156
+157
+158
+159
+160
+160
+161
+161
+161
+161
+161
+161
+160
+159
+158
+157
+156
+154
+153
+152
+149
+148
+146
+144
+142
+140
+137
+135
+133
+130
+127
+125
+122
+120
+116
+114
+110
+107
+105
+102
+98
+95
+92
+89
+86
+82
+79
+76
+72
+68
+66
+62
+58
+55
+51
+48
+45
+42
+38
+34
+31
+27
+24
+20
+17
+13
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+19
+21
+26
+28
+32
+36
+40
+43
+47
+50
+54
+56
+60
+64
+67
+70
+74
+77
+80
+83
+87
+90
+93
+95
+99
+102
+105
+108
+111
+114
+117
+119
+122
+125
+127
+130
+132
+134
+136
+139
+141
+143
+145
+146
+148
+150
+151
+153
+153
+154
+156
+155
+156
+157
+157
+157
+157
+157
+156
+156
+155
+154
+153
+152
+151
+149
+148
+146
+145
+143
+140
+139
+137
+134
+131
+129
+127
+125
+122
+120
+116
+114
+111
+108
+105
+102
+99
+96
+93
+90
+87
+84
+80
+77
+74
+70
+67
+63
+60
+57
+53
+50
+46
+43
+40
+36
+33
+29
+25
+21
+18
+14
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+16
+20
+24
+27
+31
+34
+37
+41
+45
+48
+52
+54
+58
+61
+65
+68
+71
+74
+77
+81
+84
+87
+90
+94
+96
+100
+102
+105
+108
+111
+113
+116
+119
+122
+124
+127
+129
+131
+133
+135
+137
+139
+141
+143
+144
+146
+147
+148
+149
+150
+151
+152
+152
+153
+153
+153
+153
+153
+152
+152
+151
+150
+149
+148
+147
+146
+144
+143
+141
+140
+138
+136
+133
+131
+129
+127
+124
+121
+119
+117
+114
+111
+108
+105
+103
+99
+96
+94
+91
+88
+84
+81
+78
+74
+71
+68
+64
+61
+58
+55
+51
+48
+45
+41
+38
+34
+30
+27
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+19
+21
+25
+29
+32
+36
+39
+43
+46
+50
+53
+56
+59
+63
+66
+69
+72
+75
+78
+82
+85
+88
+91
+94
+97
+100
+103
+105
+108
+111
+113
+116
+118
+121
+124
+126
+128
+130
+132
+134
+135
+138
+139
+141
+142
+144
+145
+146
+147
+147
+148
+149
+149
+149
+149
+149
+149
+149
+148
+147
+147
+146
+144
+143
+143
+140
+139
+138
+136
+134
+132
+130
+128
+126
+124
+121
+119
+116
+113
+111
+108
+106
+102
+100
+97
+94
+91
+88
+85
+82
+78
+76
+72
+69
+66
+62
+59
+56
+52
+49
+46
+43
+39
+36
+32
+29
+25
+22
+18
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+17
+20
+24
+27
+31
+34
+37
+41
+44
+47
+51
+54
+58
+60
+63
+66
+70
+73
+76
+79
+82
+85
+88
+92
+94
+97
+100
+103
+105
+108
+110
+113
+116
+118
+121
+122
+125
+126
+129
+130
+132
+134
+136
+137
+138
+140
+141
+142
+143
+144
+144
+145
+145
+145
+145
+145
+145
+145
+144
+144
+143
+142
+141
+140
+138
+137
+135
+134
+132
+130
+128
+127
+124
+122
+121
+118
+116
+113
+111
+108
+105
+102
+100
+97
+94
+91
+88
+85
+82
+79
+76
+73
+70
+67
+63
+60
+57
+54
+50
+48
+44
+40
+37
+34
+30
+27
+24
+20
+16
+14
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+8
+11
+15
+18
+22
+25
+28
+32
+35
+39
+41
+45
+48
+51
+55
+58
+61
+65
+68
+70
+74
+77
+80
+83
+86
+88
+92
+95
+97
+99
+102
+105
+107
+110
+112
+115
+117
+119
+121
+123
+125
+128
+128
+131
+132
+134
+135
+136
+137
+138
+139
+139
+140
+140
+141
+141
+141
+141
+141
+141
+141
+140
+139
+138
+137
+136
+135
+133
+132
+131
+129
+127
+125
+123
+121
+119
+116
+115
+112
+110
+108
+104
+103
+100
+97
+94
+91
+89
+86
+83
+79
+76
+74
+71
+68
+64
+61
+58
+55
+52
+48
+45
+42
+39
+35
+32
+29
+25
+22
+19
+15
+12
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+10
+13
+17
+20
+23
+26
+30
+33
+37
+39
+43
+46
+50
+53
+56
+59
+62
+65
+69
+71
+75
+77
+80
+83
+86
+89
+92
+94
+97
+100
+102
+104
+107
+109
+112
+114
+116
+118
+120
+122
+123
+125
+127
+128
+130
+131
+132
+133
+135
+135
+136
+137
+136
+137
+137
+138
+138
+137
+137
+136
+136
+135
+134
+133
+133
+131
+130
+128
+126
+125
+124
+122
+120
+118
+115
+114
+112
+109
+107
+105
+102
+100
+97
+94
+91
+89
+86
+83
+81
+78
+74
+72
+68
+66
+62
+59
+56
+53
+49
+47
+43
+40
+36
+33
+30
+27
+23
+20
+16
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+14
+18
+21
+24
+27
+31
+35
+37
+41
+44
+47
+50
+53
+57
+59
+63
+66
+69
+72
+74
+78
+80
+83
+86
+88
+91
+94
+97
+99
+101
+104
+106
+108
+110
+112
+115
+116
+118
+120
+121
+123
+124
+126
+127
+128
+130
+130
+132
+132
+132
+133
+134
+134
+134
+134
+133
+133
+132
+132
+131
+130
+130
+129
+127
+126
+125
+123
+122
+120
+118
+116
+115
+113
+111
+109
+106
+103
+101
+99
+97
+94
+91
+89
+86
+83
+80
+77
+75
+72
+69
+66
+63
+60
+56
+54
+50
+47
+44
+41
+38
+34
+31
+28
+24
+22
+18
+14
+11
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+9
+12
+16
+19
+22
+25
+29
+32
+36
+39
+42
+45
+48
+51
+54
+58
+60
+63
+66
+69
+72
+74
+78
+81
+83
+85
+89
+91
+93
+96
+98
+100
+103
+105
+107
+109
+112
+113
+115
+116
+118
+120
+121
+122
+123
+125
+126
+127
+127
+128
+129
+129
+130
+129
+130
+130
+129
+129
+128
+128
+127
+126
+126
+125
+123
+122
+121
+119
+118
+116
+115
+113
+111
+109
+108
+105
+103
+101
+98
+96
+94
+90
+88
+86
+83
+81
+77
+75
+72
+69
+66
+64
+60
+57
+54
+51
+48
+45
+42
+38
+36
+32
+29
+25
+22
+19
+16
+12
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+7
+10
+14
+17
+20
+24
+27
+30
+33
+36
+39
+42
+45
+49
+51
+54
+58
+61
+64
+67
+69
+72
+75
+77
+80
+82
+85
+88
+90
+93
+95
+98
+100
+102
+103
+105
+108
+109
+111
+113
+115
+116
+118
+119
+120
+121
+122
+123
+124
+125
+124
+125
+125
+125
+126
+126
+125
+125
+125
+124
+124
+123
+122
+121
+119
+119
+118
+116
+114
+113
+111
+110
+107
+106
+104
+101
+100
+97
+95
+92
+90
+88
+85
+83
+80
+78
+75
+72
+69
+67
+64
+60
+58
+55
+52
+49
+45
+43
+39
+36
+33
+30
+26
+24
+20
+17
+13
+10
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+18
+21
+24
+27
+31
+34
+37
+40
+43
+47
+49
+52
+55
+58
+61
+64
+66
+69
+72
+75
+77
+80
+82
+84
+87
+90
+92
+94
+96
+99
+100
+103
+104
+106
+107
+109
+111
+113
+113
+115
+116
+117
+118
+119
+119
+120
+120
+121
+122
+122
+122
+122
+122
+122
+121
+121
+120
+119
+118
+117
+116
+115
+114
+113
+111
+110
+108
+106
+104
+103
+101
+98
+96
+94
+92
+90
+88
+85
+82
+80
+77
+74
+72
+69
+66
+64
+61
+58
+55
+52
+49
+46
+43
+40
+37
+34
+31
+28
+25
+22
+18
+15
+12
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+9
+13
+16
+19
+22
+26
+28
+31
+34
+38
+40
+43
+47
+49
+53
+55
+58
+61
+64
+67
+69
+72
+74
+77
+79
+82
+84
+86
+88
+91
+93
+95
+97
+98
+101
+103
+104
+106
+107
+108
+110
+111
+112
+113
+114
+115
+116
+116
+117
+117
+118
+117
+118
+118
+118
+118
+117
+117
+116
+115
+115
+113
+112
+112
+110
+109
+108
+106
+104
+102
+101
+99
+97
+95
+93
+91
+89
+86
+85
+82
+80
+77
+74
+72
+69
+67
+63
+61
+58
+56
+53
+50
+47
+44
+41
+38
+34
+32
+28
+25
+22
+19
+16
+13
+10
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+7
+10
+13
+17
+20
+23
+26
+29
+32
+36
+38
+41
+44
+47
+49
+53
+56
+58
+61
+63
+66
+69
+71
+74
+76
+78
+81
+84
+86
+88
+89
+91
+93
+96
+97
+99
+100
+102
+104
+105
+106
+108
+108
+110
+111
+111
+112
+112
+113
+113
+114
+114
+114
+114
+114
+113
+113
+112
+112
+111
+110
+110
+108
+108
+107
+105
+103
+102
+101
+99
+97
+96
+93
+92
+90
+88
+85
+83
+81
+79
+76
+74
+71
+69
+66
+64
+61
+59
+55
+53
+50
+47
+44
+41
+39
+35
+32
+30
+27
+23
+20
+16
+13
+10
+8
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+18
+20
+24
+27
+30
+33
+36
+39
+41
+44
+47
+50
+53
+55
+58
+60
+63
+66
+69
+70
+73
+76
+78
+80
+82
+84
+86
+88
+90
+92
+93
+95
+97
+98
+99
+101
+102
+104
+105
+106
+106
+107
+108
+109
+109
+110
+109
+110
+110
+110
+110
+109
+109
+109
+108
+108
+107
+106
+104
+104
+103
+102
+100
+99
+97
+96
+93
+92
+90
+88
+86
+85
+83
+80
+78
+75
+73
+71
+68
+65
+64
+61
+59
+55
+53
+50
+47
+44
+41
+39
+36
+33
+29
+27
+24
+21
+17
+14
+12
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+8
+12
+15
+18
+22
+25
+27
+30
+33
+36
+39
+42
+45
+47
+50
+53
+55
+58
+60
+63
+65
+68
+70
+72
+75
+77
+78
+81
+83
+85
+87
+89
+90
+92
+93
+95
+96
+97
+99
+100
+101
+102
+102
+103
+104
+105
+105
+105
+106
+106
+106
+106
+106
+105
+105
+104
+104
+104
+103
+102
+101
+100
+99
+98
+96
+95
+94
+92
+91
+88
+87
+85
+83
+81
+79
+76
+74
+73
+70
+67
+66
+63
+60
+58
+55
+53
+49
+47
+44
+42
+39
+36
+33
+30
+27
+24
+21
+18
+15
+12
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+6
+10
+12
+16
+18
+22
+25
+27
+31
+33
+36
+39
+41
+44
+47
+49
+52
+55
+57
+60
+62
+64
+67
+69
+71
+73
+76
+77
+79
+81
+83
+85
+87
+88
+90
+92
+93
+94
+95
+96
+98
+99
+99
+100
+100
+101
+101
+102
+102
+102
+102
+102
+102
+102
+102
+100
+100
+100
+99
+98
+97
+96
+95
+94
+92
+92
+90
+88
+87
+85
+84
+82
+79
+78
+76
+73
+71
+69
+67
+64
+62
+59
+58
+55
+52
+50
+47
+45
+42
+39
+36
+33
+31
+27
+24
+22
+18
+16
+13
+9
+7
+3
+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
+1
+4
+8
+10
+13
+16
+19
+22
+25
+27
+30
+34
+36
+39
+41
+44
+47
+49
+52
+55
+57
+59
+61
+64
+66
+68
+70
+73
+74
+76
+78
+79
+81
+83
+84
+87
+88
+89
+90
+92
+93
+93
+94
+95
+96
+96
+97
+98
+98
+98
+99
+98
+99
+98
+98
+97
+97
+97
+95
+95
+94
+94
+92
+92
+90
+89
+87
+86
+85
+83
+81
+80
+78
+76
+74
+72
+71
+68
+66
+64
+61
+59
+57
+54
+52
+49
+47
+45
+41
+39
+36
+33
+30
+27
+24
+22
+19
+16
+13
+11
+7
+4
+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
+1
+4
+7
+11
+14
+16
+19
+23
+25
+28
+31
+34
+35
+38
+41
+44
+46
+48
+51
+53
+56
+58
+60
+62
+64
+67
+69
+70
+73
+75
+76
+78
+79
+81
+82
+84
+86
+87
+87
+89
+90
+91
+91
+92
+93
+93
+93
+94
+95
+94
+94
+94
+94
+94
+94
+93
+92
+92
+91
+90
+89
+88
+87
+87
+86
+84
+83
+81
+79
+78
+76
+74
+73
+71
+68
+67
+65
+63
+61
+58
+56
+54
+51
+49
+46
+43
+41
+38
+36
+33
+30
+27
+25
+22
+19
+17
+14
+11
+8
+5
+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
+2
+5
+8
+11
+13
+17
+20
+22
+25
+27
+30
+33
+36
+38
+40
+43
+45
+48
+50
+53
+55
+57
+59
+61
+63
+66
+67
+69
+71
+73
+74
+76
+77
+79
+81
+82
+83
+84
+84
+86
+86
+88
+88
+88
+89
+90
+90
+90
+91
+90
+91
+91
+90
+90
+89
+89
+88
+87
+87
+86
+85
+84
+83
+82
+80
+79
+78
+76
+75
+73
+71
+69
+68
+66
+63
+61
+59
+57
+55
+52
+50
+48
+46
+43
+40
+38
+35
+33
+30
+27
+25
+22
+20
+16
+13
+11
+8
+5
+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
+0
+0
+2
+5
+9
+11
+13
+16
+20
+22
+25
+28
+30
+33
+36
+38
+40
+42
+44
+48
+50
+51
+54
+56
+58
+60
+62
+64
+66
+68
+69
+70
+72
+74
+75
+77
+78
+79
+80
+81
+82
+83
+84
+85
+85
+86
+86
+86
+86
+86
+86
+86
+86
+86
+86
+86
+84
+85
+83
+83
+82
+81
+80
+79
+78
+77
+76
+73
+72
+71
+69
+68
+65
+64
+62
+60
+58
+56
+54
+51
+49
+47
+45
+42
+40
+37
+35
+33
+30
+27
+25
+22
+20
+17
+14
+11
+8
+5
+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
+0
+0
+0
+0
+3
+6
+9
+11
+14
+16
+19
+22
+25
+27
+30
+32
+34
+37
+39
+42
+44
+46
+49
+50
+52
+55
+57
+59
+60
+62
+64
+65
+68
+68
+70
+72
+72
+74
+75
+76
+77
+78
+79
+79
+80
+81
+81
+82
+82
+82
+83
+83
+83
+82
+83
+82
+81
+81
+80
+80
+79
+78
+77
+76
+76
+74
+72
+71
+70
+68
+67
+66
+64
+62
+61
+58
+56
+55
+53
+50
+48
+46
+45
+42
+39
+37
+35
+32
+29
+27
+25
+22
+20
+16
+14
+11
+9
+6
+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
+0
+0
+0
+0
+0
+0
+3
+6
+8
+11
+13
+17
+20
+21
+25
+27
+29
+32
+34
+36
+39
+41
+43
+45
+48
+49
+51
+53
+55
+57
+58
+60
+62
+63
+65
+67
+68
+70
+70
+71
+72
+73
+75
+76
+75
+77
+77
+77
+78
+78
+79
+78
+78
+78
+78
+78
+78
+78
+77
+77
+76
+75
+75
+74
+73
+72
+70
+69
+67
+67
+65
+64
+62
+61
+59
+57
+56
+53
+51
+49
+47
+46
+43
+41
+39
+36
+34
+31
+29
+27
+24
+22
+19
+17
+14
+11
+8
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+11
+13
+16
+18
+21
+24
+26
+29
+30
+33
+36
+37
+40
+42
+44
+46
+48
+50
+51
+53
+55
+56
+58
+60
+61
+62
+64
+66
+66
+67
+69
+70
+70
+71
+72
+73
+74
+73
+74
+75
+75
+74
+75
+74
+75
+74
+74
+74
+73
+73
+72
+72
+70
+70
+68
+67
+67
+65
+64
+62
+61
+60
+58
+57
+55
+54
+52
+50
+48
+46
+44
+42
+40
+37
+35
+33
+31
+29
+27
+24
+22
+19
+16
+14
+11
+8
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+8
+11
+13
+16
+18
+21
+23
+25
+28
+30
+32
+34
+36
+39
+40
+43
+44
+46
+48
+50
+52
+53
+55
+56
+58
+59
+60
+62
+63
+64
+65
+66
+67
+67
+68
+68
+70
+70
+70
+70
+71
+70
+71
+70
+71
+70
+70
+70
+69
+68
+69
+67
+66
+66
+64
+64
+62
+62
+60
+59
+58
+57
+55
+53
+52
+50
+48
+46
+45
+43
+40
+38
+36
+35
+32
+29
+28
+25
+23
+20
+18
+16
+13
+11
+8
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+10
+13
+15
+18
+20
+22
+25
+27
+29
+31
+33
+35
+37
+39
+41
+42
+45
+47
+48
+49
+51
+53
+54
+55
+56
+58
+59
+60
+61
+62
+63
+63
+64
+65
+65
+66
+67
+66
+67
+67
+67
+67
+67
+67
+66
+66
+66
+64
+65
+64
+63
+62
+61
+60
+59
+58
+57
+56
+54
+53
+51
+50
+48
+46
+45
+43
+41
+40
+37
+35
+33
+31
+29
+26
+24
+22
+20
+18
+15
+13
+10
+7
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+7
+9
+12
+14
+17
+19
+22
+24
+26
+28
+30
+31
+34
+35
+37
+39
+41
+43
+45
+46
+48
+49
+50
+52
+53
+54
+56
+56
+57
+59
+59
+60
+61
+61
+61
+62
+63
+62
+63
+63
+63
+63
+62
+63
+62
+62
+61
+61
+61
+59
+59
+58
+57
+56
+55
+54
+53
+52
+50
+49
+47
+46
+44
+43
+41
+40
+37
+36
+34
+32
+30
+28
+25
+24
+21
+19
+17
+14
+12
+10
+7
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+9
+12
+14
+16
+18
+21
+22
+24
+27
+28
+30
+32
+35
+36
+37
+40
+41
+43
+44
+45
+47
+48
+49
+50
+52
+52
+54
+55
+55
+56
+56
+58
+57
+58
+59
+58
+58
+59
+59
+59
+59
+59
+59
+58
+58
+57
+57
+56
+55
+55
+53
+53
+52
+51
+49
+48
+47
+45
+44
+42
+41
+39
+37
+36
+34
+32
+31
+29
+27
+25
+22
+20
+18
+16
+14
+11
+8
+6
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+6
+9
+11
+12
+15
+17
+19
+21
+23
+25
+27
+28
+31
+33
+34
+36
+37
+39
+40
+42
+43
+44
+46
+46
+48
+49
+50
+51
+52
+52
+53
+54
+54
+54
+54
+55
+55
+55
+55
+56
+55
+54
+54
+54
+54
+53
+52
+52
+52
+50
+49
+49
+48
+47
+46
+44
+43
+42
+40
+39
+37
+36
+34
+33
+30
+29
+27
+25
+23
+21
+19
+16
+15
+12
+11
+8
+6
+4
+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
+0
+0
+2
+5
+7
+9
+12
+14
+16
+18
+20
+22
+24
+26
+27
+29
+31
+33
+33
+35
+37
+38
+40
+40
+41
+42
+44
+45
+46
+46
+48
+48
+49
+50
+49
+51
+50
+51
+51
+52
+51
+51
+51
+51
+50
+50
+50
+49
+48
+49
+47
+47
+46
+45
+44
+43
+42
+41
+39
+38
+37
+35
+34
+32
+30
+28
+27
+25
+23
+21
+19
+17
+15
+14
+12
+10
+7
+5
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+4
+6
+8
+10
+13
+15
+17
+18
+21
+22
+23
+25
+27
+29
+30
+32
+33
+35
+35
+37
+38
+39
+40
+41
+42
+43
+44
+44
+45
+46
+46
+46
+47
+47
+47
+48
+47
+47
+47
+47
+47
+47
+46
+46
+45
+44
+43
+43
+42
+41
+40
+39
+38
+37
+35
+34
+33
+32
+30
+29
+27
+26
+24
+22
+20
+19
+17
+15
+13
+11
+8
+6
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+5
+7
+9
+11
+13
+15
+17
+18
+20
+22
+23
+25
+27
+28
+29
+30
+32
+33
+34
+36
+36
+37
+38
+39
+40
+40
+41
+42
+42
+42
+43
+43
+44
+43
+43
+44
+43
+43
+43
+42
+42
+41
+41
+41
+40
+39
+38
+37
+37
+35
+34
+33
+32
+31
+29
+28
+26
+25
+23
+22
+20
+19
+16
+15
+12
+11
+9
+7
+5
+3
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+4
+5
+7
+9
+12
+13
+15
+16
+19
+20
+21
+23
+24
+25
+27
+29
+29
+31
+32
+33
+33
+34
+35
+35
+37
+37
+38
+39
+38
+38
+39
+39
+39
+40
+40
+39
+39
+39
+38
+38
+38
+37
+37
+36
+35
+34
+34
+33
+31
+31
+30
+28
+26
+26
+25
+23
+21
+20
+18
+17
+14
+13
+11
+10
+7
+6
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+4
+6
+8
+9
+11
+13
+15
+17
+17
+19
+20
+22
+23
+24
+26
+27
+28
+29
+30
+31
+32
+32
+33
+34
+34
+34
+35
+35
+35
+35
+36
+35
+36
+35
+35
+35
+35
+34
+34
+33
+32
+32
+31
+31
+29
+29
+28
+27
+26
+25
+24
+22
+21
+19
+18
+16
+15
+13
+12
+10
+7
+6
+4
+3
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+5
+6
+8
+9
+11
+13
+14
+16
+17
+18
+20
+20
+21
+23
+24
+25
+26
+26
+28
+28
+29
+29
+30
+31
+31
+31
+32
+31
+31
+31
+31
+32
+31
+31
+30
+30
+30
+29
+28
+29
+28
+27
+26
+25
+24
+23
+21
+21
+20
+18
+17
+15
+14
+13
+11
+10
+8
+6
+4
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+4
+6
+7
+9
+10
+12
+13
+15
+15
+17
+18
+19
+20
+21
+22
+23
+24
+24
+25
+26
+26
+26
+27
+27
+27
+28
+28
+28
+28
+28
+27
+27
+27
+27
+26
+26
+25
+25
+24
+23
+22
+21
+20
+20
+18
+17
+15
+15
+13
+12
+11
+9
+8
+6
+5
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+4
+5
+7
+8
+10
+10
+12
+14
+15
+16
+16
+18
+19
+19
+19
+20
+21
+22
+22
+23
+23
+23
+24
+23
+24
+24
+24
+24
+23
+24
+23
+23
+22
+22
+21
+20
+20
+19
+19
+18
+16
+15
+14
+13
+12
+11
+10
+9
+7
+6
+4
+3
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+4
+6
+7
+9
+10
+11
+11
+12
+13
+14
+15
+16
+17
+17
+18
+18
+18
+19
+20
+20
+20
+20
+20
+19
+19
+19
+19
+19
+19
+18
+18
+17
+17
+16
+15
+14
+14
+13
+11
+11
+9
+8
+8
+6
+4
+4
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+4
+4
+6
+6
+8
+9
+9
+11
+11
+12
+13
+14
+14
+14
+15
+15
+15
+16
+16
+16
+16
+16
+16
+15
+15
+15
+15
+14
+14
+13
+13
+12
+11
+11
+9
+9
+8
+7
+5
+4
+4
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+9
+9
+10
+10
+11
+11
+11
+12
+11
+12
+12
+12
+12
+12
+11
+11
+11
+11
+10
+9
+9
+8
+7
+7
+6
+6
+4
+3
+2
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+3
+4
+5
+5
+6
+6
+7
+7
+7
+7
+8
+8
+8
+8
+8
+8
+8
+7
+8
+7
+6
+6
+6
+5
+5
+4
+3
+2
+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
+0
FUNCTION: FT_Error FT_Load_Char ( face* face, FT_ULong charcode, FT_Int32 load_flags ) ;
-C-ENUM:
+C-ENUM: f
FT_RENDER_MODE_NORMAL
FT_RENDER_MODE_LIGHT
FT_RENDER_MODE_MONO
FT_RENDER_MODE_LCD
FT_RENDER_MODE_LCD_V ;
-C-ENUM:
+C-ENUM: f
FT_PIXEL_MODE_NONE
FT_PIXEL_MODE_MONO
FT_PIXEL_MODE_GRAY
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: arrays destructors fry gpu.framebuffers gpu.render gpu.shaders
+gpu.state gpu.textures gpu.util images kernel locals math
+math.rectangles sequences ;
+IN: gpu.effects.blur
+
+GLSL-SHADER: blur-fragment-shader fragment-shader
+uniform sampler2D texture;
+uniform bool horizontal;
+uniform float blurSize;
+varying vec2 texcoord;
+void main()
+{
+ vec4 col = 0.16 * texture2D(texture, texcoord);
+ if (horizontal)
+ {
+ vec2 blurX1 = vec2(blurSize, 0.0);
+ vec2 blurX2 = vec2(blurSize * 2.0, 0.0);
+ vec2 blurX3 = vec2(blurSize * 3.0, 0.0);
+ vec2 blurX4 = vec2(blurSize * 4.0, 0.0);
+ col += 0.15 * ( texture2D(texture, texcoord - blurX1)
+ + texture2D(texture, texcoord + blurX1));
+ col += 0.12 * ( texture2D(texture, texcoord - blurX2)
+ + texture2D(texture, texcoord + blurX2));
+ col += 0.09 * ( texture2D(texture, texcoord - blurX3)
+ + texture2D(texture, texcoord + blurX3));
+ col += 0.05 * ( texture2D(texture, texcoord - blurX4)
+ + texture2D(texture, texcoord + blurX4));
+ }
+ else
+ {
+ vec2 blurY1 = vec2(0.0, blurSize);
+ vec2 blurY2 = vec2(0.0, blurSize * 2.0);
+ vec2 blurY3 = vec2(0.0, blurSize * 3.0);
+ vec2 blurY4 = vec2(0.0, blurSize * 4.0);
+ col += 0.15 * ( texture2D(texture, texcoord - blurY1)
+ + texture2D(texture, texcoord + blurY1));
+ col += 0.12 * ( texture2D(texture, texcoord - blurY2)
+ + texture2D(texture, texcoord + blurY2));
+ col += 0.09 * ( texture2D(texture, texcoord - blurY3)
+ + texture2D(texture, texcoord + blurY3));
+ col += 0.05 * ( texture2D(texture, texcoord - blurY4)
+ + texture2D(texture, texcoord + blurY4));
+ }
+ gl_FragColor = col;
+}
+;
+
+UNIFORM-TUPLE: blur-uniforms
+ { "texture" texture-uniform f }
+ { "horizontal" bool-uniform f }
+ { "blurSize" float-uniform f } ;
+
+GLSL-PROGRAM: blur-program window-vertex-shader blur-fragment-shader window-vertex-format ;
+
+:: (blur) ( texture horizontal? framebuffer dim -- )
+ { 0 0 } dim <rect> <viewport-state> set-gpu-state
+ texture horizontal? 1.0 dim horizontal? [ first ] [ second ] if / blur-uniforms boa framebuffer {
+ { "primitive-mode" [ 2drop triangle-strip-mode ] }
+ { "uniforms" [ drop ] }
+ { "vertex-array" [ 2drop blur-program <program-instance> <window-vertex-array> &dispose ] }
+ { "indexes" [ 2drop T{ index-range f 0 4 } ] }
+ { "framebuffer" [ nip ] }
+ } 2<render-set> render ;
+
+:: blur ( texture horizontal? -- texture )
+ texture 0 texture-dim :> dim
+ dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+ texture horizontal? target-framebuffer dim (blur)
+ target-framebuffer dispose
+ target-texture ;
+
+: horizontal-blur ( texture -- texture ) t blur ; inline
+
+: vertical-blur ( texture -- texture ) f blur ; inline
+
+: discompose ( quot1 quot2 -- compose )
+ '[ @ &dispose @ ] with-destructors ; inline
+
+: gaussian-blur ( texture -- texture )
+ [ horizontal-blur ] [ vertical-blur ] discompose ;
--- /dev/null
+Blur effects for textures.
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: ;
+IN: gpu.effects.quad
--- /dev/null
+Render a screen-aligned quad.
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: destructors gpu.render gpu.shaders gpu.state gpu.textures
+gpu.util images kernel locals math.rectangles ;
+IN: gpu.effects.step
+
+GLSL-SHADER: step-fragment-shader fragment-shader
+const vec4 luminance = vec4(0.3, 0.59, 0.11, 0.0);
+uniform sampler2D texture;
+uniform sampler2D ramp;
+varying vec2 texcoord;
+void main()
+{
+ vec4 col = texture2D(texture, texcoord);
+ float l = dot(col, luminance);
+ gl_FragColor = texture2D(ramp, vec2(l, 0.0));
+}
+;
+
+UNIFORM-TUPLE: step-uniforms
+ { "texture" texture-uniform f }
+ { "ramp" texture-uniform f } ;
+
+GLSL-PROGRAM: step-program window-vertex-shader step-fragment-shader window-vertex-format ;
+
+: (step-texture) ( texture ramp texture dim -- )
+ { 0 0 } swap <rect> <viewport-state> set-gpu-state
+ [ step-uniforms boa ] dip {
+ { "primitive-mode" [ 2drop triangle-strip-mode ] }
+ { "uniforms" [ drop ] }
+ { "vertex-array" [ 2drop <window-vertex-buffer> step-program <program-instance> <vertex-array> ] }
+ { "indexes" [ 2drop T{ index-range f 0 4 } ] }
+ { "framebuffer" [ nip ] }
+ } 2<render-set> render ;
+
+:: step-texture ( texture ramp dim -- texture )
+ dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+ texture ramp target-framebuffer dim (step-texture)
+ target-framebuffer dispose
+ target-texture ;
--- /dev/null
+Render a quad with a step texture.
! (c)2009 Joe Groff bsd license
-USING: gpu.buffers gpu.render gpu.shaders gpu.textures images kernel
-specialized-arrays ;
+USING: arrays destructors gpu.buffers gpu.framebuffers gpu.render
+gpu.shaders gpu.state gpu.textures images kernel locals math
+math.rectangles opengl.gl sequences specialized-arrays ;
FROM: alien.c-types => float ;
SPECIALIZED-ARRAY: float
IN: gpu.util
{ 0.0 0.0 0.0 1.0 }
} }
}
+
+GLSL-SHADER: window-vertex-shader vertex-shader
+attribute vec2 vertex;
+varying vec2 texcoord;
+void main()
+{
+ texcoord = vertex * vec2(0.5) + vec2(0.5);
+ gl_Position = vec4(vertex, 0.0, 1.0);
+}
+;
-VERTEX-FORMAT: window-vertex
+GLSL-SHADER: window-fragment-shader fragment-shader
+uniform sampler2D texture;
+varying vec2 texcoord;
+void main()
+{
+ gl_FragColor = texture2D(texture, texcoord);
+}
+;
+
+VERTEX-FORMAT: window-vertex-format
{ "vertex" float-components 2 f } ;
+UNIFORM-TUPLE: window-uniforms
+ { "texture" texture-uniform f } ;
+
+GLSL-PROGRAM: window-program window-vertex-shader window-fragment-shader window-vertex-format ;
+
+GLSL-SHADER: window-point-vertex-shader vertex-shader
+uniform float point_size;
+attribute vec2 vertex;
+void main()
+{
+ gl_Position = vec4(vertex, 0.0, 1.0);
+ gl_PointSize = point_size;
+}
+;
+
+GLSL-SHADER: window-point-fragment-shader fragment-shader
+#version 120
+uniform sampler2D texture;
+void main()
+{
+ gl_FragColor = texture2D(texture, gl_PointCoord);
+}
+;
+
+UNIFORM-TUPLE: window-point-uniforms
+ { "texture" texture-uniform f }
+ { "point_size" float-uniform f } ;
+
+GLSL-PROGRAM: window-point-program window-point-vertex-shader window-point-fragment-shader window-vertex-format ;
+
CONSTANT: window-vertexes
float-array{
-1.0 -1.0
byte-array>buffer ; inline
: <window-vertex-array> ( program-instance -- vertex-array )
- [ <window-vertex-buffer> ] dip window-vertex <vertex-array*> ; inline
+ [ <window-vertex-buffer> ] dip window-vertex-format <vertex-array*> ; inline
+
+:: <2d-render-texture> ( dim order type -- renderbuffer texture )
+ order type
+ T{ texture-parameters
+ { wrap clamp-texcoord-to-edge }
+ { min-filter filter-linear }
+ { min-mipmap-filter f } }
+ <texture-2d> [
+ 0 <texture-2d-attachment> 1array f f dim <framebuffer>
+ dup { { default-attachment { 0 0 0 } } } clear-framebuffer
+ ] keep ;
+
+: draw-texture ( texture dim -- )
+ { 0 0 } swap <rect> <viewport-state> set-gpu-state
+ {
+ { "primitive-mode" [ drop triangle-strip-mode ] }
+ { "uniforms" [ window-uniforms boa ] }
+ { "vertex-array" [ drop window-program <program-instance> <window-vertex-array> &dispose ] }
+ { "indexes" [ drop T{ index-range f 0 4 } ] }
+ } <render-set> render ;
+
+:: <streamed-vertex-array> ( verts program-instance -- vertex-array )
+ verts stream-upload draw-usage vertex-buffer byte-array>buffer &dispose
+ program-instance <vertex-array> &dispose ;
+
+: (blended-point-sprite-batch) ( verts framebuffer texture point-size dim -- )
+ f eq-add func-one func-one <blend-mode> dup <blend-state> set-gpu-state
+ f origin-upper-left 1.0 <point-state> set-gpu-state
+ GL_POINT_SPRITE glEnable
+ { 0 0 } swap <rect> <viewport-state> set-gpu-state
+ window-point-uniforms boa {
+ { "primitive-mode" [ 3drop points-mode ] }
+ { "uniforms" [ 2nip ] }
+ { "vertex-array" [ 2drop window-point-program <program-instance> <streamed-vertex-array> ] }
+ { "indexes" [ 2drop length 2 / 0 swap <index-range> ] }
+ { "framebuffer" [ drop nip ] }
+ } 3<render-set> render ;
+
+:: blended-point-sprite-batch ( verts texture point-size dim -- texture )
+ dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+ verts target-framebuffer texture point-size dim (blended-point-sprite-batch)
+ target-framebuffer dispose
+ target-texture ;
--- /dev/null
+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
--- /dev/null
+P3
+# CREATOR: GIMP PNM Filter Version 1.1
+160 120
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+190
+255
+218
+71
+255
+207
+17
+255
+205
+4
+255
+210
+31
+255
+223
+95
+255
+243
+196
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+239
+174
+255
+204
+2
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+213
+43
+255
+204
+0
+255
+219
+77
+255
+247
+214
+255
+254
+251
+255
+251
+234
+255
+238
+169
+255
+217
+63
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+205
+5
+255
+204
+0
+255
+252
+238
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+210
+32
+255
+204
+0
+255
+230
+132
+255
+251
+237
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+204
+0
+255
+204
+1
+255
+211
+36
+255
+221
+87
+255
+237
+164
+255
+254
+250
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+190
+255
+219
+77
+255
+206
+11
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+214
+48
+255
+251
+233
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+254
+252
+255
+247
+213
+255
+234
+152
+255
+211
+35
+255
+204
+0
+255
+222
+92
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+248
+220
+255
+204
+0
+255
+208
+19
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+251
+235
+255
+204
+0
+255
+205
+5
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+215
+54
+255
+234
+150
+255
+247
+215
+255
+254
+248
+255
+254
+249
+255
+245
+204
+255
+218
+68
+255
+204
+0
+255
+212
+42
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+247
+217
+255
+204
+2
+255
+206
+10
+255
+251
+236
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+206
+11
+255
+204
+2
+255
+247
+216
+255
+255
+255
+255
+241
+186
+255
+219
+75
+255
+207
+15
+255
+206
+9
+255
+215
+57
+255
+242
+188
+255
+255
+255
+255
+255
+255
+255
+247
+217
+255
+204
+2
+255
+206
+10
+255
+251
+236
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+206
+11
+255
+204
+2
+255
+247
+216
+255
+255
+255
+255
+241
+186
+255
+219
+75
+255
+207
+15
+255
+206
+9
+255
+215
+57
+255
+242
+188
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+2
+255
+238
+172
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+221
+85
+255
+204
+0
+255
+230
+132
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+232
+138
+255
+204
+0
+255
+220
+80
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+5
+255
+245
+204
+255
+255
+255
+255
+255
+255
+255
+221
+85
+255
+204
+0
+255
+230
+132
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+232
+138
+255
+204
+0
+255
+220
+80
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+5
+255
+245
+204
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+245
+203
+255
+226
+111
+255
+213
+46
+255
+206
+9
+255
+205
+5
+255
+209
+27
+255
+221
+83
+255
+243
+195
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+245
+205
+255
+204
+0
+255
+209
+25
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+254
+251
+255
+210
+29
+255
+204
+0
+255
+244
+198
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+245
+205
+255
+254
+249
+255
+249
+227
+255
+222
+88
+255
+204
+0
+255
+222
+88
+255
+255
+255
+255
+255
+255
+255
+245
+205
+255
+204
+0
+255
+209
+25
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+254
+251
+255
+210
+29
+255
+204
+0
+255
+244
+198
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+245
+205
+255
+254
+249
+255
+249
+227
+255
+222
+88
+255
+204
+0
+255
+222
+88
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+218
+71
+255
+204
+0
+255
+236
+159
+255
+255
+255
+255
+255
+255
+255
+238
+168
+255
+204
+0
+255
+216
+60
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+204
+0
+255
+210
+29
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+218
+71
+255
+204
+0
+255
+236
+159
+255
+255
+255
+255
+255
+255
+255
+238
+168
+255
+204
+0
+255
+216
+60
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+204
+0
+255
+210
+29
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+10
+255
+206
+11
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+10
+255
+206
+11
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+192
+255
+204
+0
+255
+213
+46
+255
+255
+255
+255
+255
+255
+255
+215
+56
+255
+204
+0
+255
+240
+178
+255
+255
+255
+255
+255
+255
+255
+254
+252
+255
+232
+139
+255
+214
+48
+255
+206
+10
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+6
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+192
+255
+204
+0
+255
+213
+46
+255
+255
+255
+255
+255
+255
+255
+215
+56
+255
+204
+0
+255
+240
+178
+255
+255
+255
+255
+255
+255
+255
+254
+252
+255
+232
+139
+255
+214
+48
+255
+206
+10
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+6
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+209
+26
+255
+209
+27
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+209
+26
+255
+209
+27
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+216
+58
+255
+204
+0
+255
+241
+187
+255
+244
+199
+255
+204
+0
+255
+212
+42
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+227
+113
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+216
+58
+255
+204
+0
+255
+241
+187
+255
+244
+199
+255
+204
+0
+255
+212
+42
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+227
+113
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+213
+43
+255
+213
+43
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+213
+43
+255
+213
+43
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+240
+179
+255
+204
+0
+255
+218
+72
+255
+221
+86
+255
+204
+0
+255
+236
+158
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+18
+255
+204
+0
+255
+238
+168
+255
+252
+240
+255
+255
+254
+255
+252
+241
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+240
+179
+255
+204
+0
+255
+218
+72
+255
+221
+86
+255
+204
+0
+255
+236
+158
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+18
+255
+204
+0
+255
+238
+168
+255
+252
+240
+255
+255
+254
+255
+252
+241
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+254
+255
+213
+45
+255
+204
+1
+255
+205
+3
+255
+209
+27
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+9
+255
+204
+0
+255
+239
+176
+255
+254
+248
+255
+248
+221
+255
+221
+87
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+254
+255
+213
+45
+255
+204
+1
+255
+205
+3
+255
+209
+27
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+9
+255
+204
+0
+255
+239
+176
+255
+254
+248
+255
+248
+221
+255
+221
+87
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+237
+165
+255
+204
+0
+255
+204
+0
+255
+232
+138
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+220
+81
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+76
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+237
+165
+255
+204
+0
+255
+204
+0
+255
+232
+138
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+220
+81
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+76
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+248
+218
+255
+204
+0
+255
+207
+15
+255
+252
+241
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+251
+235
+255
+220
+82
+255
+206
+10
+255
+207
+16
+255
+223
+96
+255
+252
+240
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+248
+218
+255
+204
+0
+255
+207
+15
+255
+252
+241
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+251
+235
+255
+220
+82
+255
+206
+10
+255
+207
+16
+255
+223
+96
+255
+252
+240
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+227
+116
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+227
+116
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+238
+255
+218
+71
+255
+204
+0
+255
+247
+213
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+238
+255
+218
+71
+255
+204
+0
+255
+247
+213
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+74
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+74
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+205
+4
+255
+217
+65
+255
+250
+229
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+205
+4
+255
+217
+65
+255
+250
+229
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
CONSTANT: LIBUSB_ERROR_OTHER -99
TYPEDEF: int libusb_error
-C-ENUM:
+C-ENUM: libusb_transfer_status
LIBUSB_TRANSFER_COMPLETED
LIBUSB_TRANSFER_ERROR
LIBUSB_TRANSFER_TIMED_OUT
LIBUSB_TRANSFER_STALL
LIBUSB_TRANSFER_NO_DEVICE
LIBUSB_TRANSFER_OVERFLOW ;
-TYPEDEF: int libusb_transfer_status
CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK 1
CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER 2
! Copyright (C) 2009 Matthew Willis.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien.libraries alien.syntax system sequences combinators kernel ;
+USING: alien.libraries alien.syntax system sequences combinators kernel alien.c-types ;
IN: llvm.core
TYPEDEF: uint unsigned
TYPEDEF: unsigned enum
-CONSTANT: LLVMZExtAttribute BIN: 1
-CONSTANT: LLVMSExtAttribute BIN: 10
-CONSTANT: LLVMNoReturnAttribute BIN: 100
-CONSTANT: LLVMInRegAttribute BIN: 1000
-CONSTANT: LLVMStructRetAttribute BIN: 10000
-CONSTANT: LLVMNoUnwindAttribute BIN: 100000
-CONSTANT: LLVMNoAliasAttribute BIN: 1000000
-CONSTANT: LLVMByValAttribute BIN: 10000000
-CONSTANT: LLVMNestAttribute BIN: 100000000
-CONSTANT: LLVMReadNoneAttribute BIN: 1000000000
-CONSTANT: LLVMReadOnlyAttribute BIN: 10000000000
-TYPEDEF: enum LLVMAttribute;
-
-C-ENUM:
+C-ENUM: LLVMAttribute
+ { LLVMZExtAttribute BIN: 1 }
+ { LLVMSExtAttribute BIN: 10 }
+ { LLVMNoReturnAttribute BIN: 100 }
+ { LLVMInRegAttribute BIN: 1000 }
+ { LLVMStructRetAttribute BIN: 10000 }
+ { LLVMNoUnwindAttribute BIN: 100000 }
+ { LLVMNoAliasAttribute BIN: 1000000 }
+ { LLVMByValAttribute BIN: 10000000 }
+ { LLVMNestAttribute BIN: 100000000 }
+ { LLVMReadNoneAttribute BIN: 1000000000 }
+ { LLVMReadOnlyAttribute BIN: 10000000000 } ;
+
+C-ENUM: LLVMTypeKind
LLVMVoidTypeKind
LLVMFloatTypeKind
LLVMDoubleTypeKind
LLVMPointerTypeKind
LLVMOpaqueTypeKind
LLVMVectorTypeKind ;
-TYPEDEF: enum LLVMTypeKind
-C-ENUM:
+C-ENUM: LLVMLinkage
LLVMExternalLinkage
LLVMLinkOnceLinkage
LLVMWeakLinkage
LLVMDLLExportLinkage
LLVMExternalWeakLinkage
LLVMGhostLinkage ;
-TYPEDEF: enum LLVMLinkage
-C-ENUM:
+C-ENUM: LLVMVisibility
LLVMDefaultVisibility
LLVMHiddenVisibility
LLVMProtectedVisibility ;
-TYPEDEF: enum LLVMVisibility
-
-CONSTANT: LLVMCCallConv 0
-CONSTANT: LLVMFastCallConv 8
-CONSTANT: LLVMColdCallConv 9
-CONSTANT: LLVMX86StdcallCallConv 64
-CONSTANT: LLVMX86FastcallCallConv 65
-TYPEDEF: enum LLVMCallConv
-
-CONSTANT: LLVMIntEQ 32
-CONSTANT: LLVMIntNE 33
-CONSTANT: LLVMIntUGT 34
-CONSTANT: LLVMIntUGE 35
-CONSTANT: LLVMIntULT 36
-CONSTANT: LLVMIntULE 37
-CONSTANT: LLVMIntSGT 38
-CONSTANT: LLVMIntSGE 39
-CONSTANT: LLVMIntSLT 40
-CONSTANT: LLVMIntSLE 41
-TYPEDEF: enum LLVMIntPredicate
-
-C-ENUM:
+
+C-ENUM: LLVMCallConv
+ { LLVMCCallConv 0 }
+ { LLVMFastCallConv 8 }
+ { LLVMColdCallConv 9 }
+ { LLVMX86StdcallCallConv 64 }
+ { LLVMX86FastcallCallConv 65 } ;
+
+C-ENUM: LLVMIntPredicate
+ { LLVMIntEQ 32 }
+ { LLVMIntNE 33 }
+ { LLVMIntUGT 34 }
+ { LLVMIntUGE 35 }
+ { LLVMIntULT 36 }
+ { LLVMIntULE 37 }
+ { LLVMIntSGT 38 }
+ { LLVMIntSGE 39 }
+ { LLVMIntSLT 40 }
+ { LLVMIntSLE 41 } ;
+
+C-ENUM: LLVMRealPredicate
LLVMRealPredicateFalse
LLVMRealOEQ
LLVMRealOGT
LLVMRealULE
LLVMRealUNE
LLVMRealPredicateTrue ;
-TYPEDEF: enum LLVMRealPredicate
! Opaque Types
--- /dev/null
+Erik Charlebois
--- /dev/null
+! Copyright (C) 2010 Erik Charlebois.
+! See http:// factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.syntax classes.struct kernel literals math
+unix.types ;
+IN: macho
+
+TYPEDEF: int integer_t
+TYPEDEF: int vm_prot_t
+TYPEDEF: integer_t cpu_type_t
+TYPEDEF: integer_t cpu_subtype_t
+TYPEDEF: integer_t cpu_threadtype_t
+
+CONSTANT: VM_PROT_NONE HEX: 00
+CONSTANT: VM_PROT_READ HEX: 01
+CONSTANT: VM_PROT_WRITE HEX: 02
+CONSTANT: VM_PROT_EXECUTE HEX: 04
+CONSTANT: VM_PROT_DEFAULT HEX: 03
+CONSTANT: VM_PROT_ALL HEX: 07
+CONSTANT: VM_PROT_NO_CHANGE HEX: 08
+CONSTANT: VM_PROT_COPY HEX: 10
+CONSTANT: VM_PROT_WANTS_COPY HEX: 10
+
+! loader.h
+STRUCT: mach_header
+ { magic uint32_t }
+ { cputype cpu_type_t }
+ { cpusubtype cpu_subtype_t }
+ { filetype uint32_t }
+ { ncmds uint32_t }
+ { sizeofcmds uint32_t }
+ { flags uint32_t } ;
+
+CONSTANT: MH_MAGIC HEX: feedface
+CONSTANT: MH_CIGAM HEX: cefaedfe
+
+STRUCT: mach_header_64
+ { magic uint32_t }
+ { cputype cpu_type_t }
+ { cpusubtype cpu_subtype_t }
+ { filetype uint32_t }
+ { ncmds uint32_t }
+ { sizeofcmds uint32_t }
+ { flags uint32_t }
+ { reserved uint32_t } ;
+
+CONSTANT: MH_MAGIC_64 HEX: feedfacf
+CONSTANT: MH_CIGAM_64 HEX: cffaedfe
+
+CONSTANT: MH_OBJECT HEX: 1
+CONSTANT: MH_EXECUTE HEX: 2
+CONSTANT: MH_FVMLIB HEX: 3
+CONSTANT: MH_CORE HEX: 4
+CONSTANT: MH_PRELOAD HEX: 5
+CONSTANT: MH_DYLIB HEX: 6
+CONSTANT: MH_DYLINKER HEX: 7
+CONSTANT: MH_BUNDLE HEX: 8
+CONSTANT: MH_DYLIB_STUB HEX: 9
+CONSTANT: MH_DSYM HEX: a
+CONSTANT: MH_KEXT_BUNDLE HEX: b
+
+CONSTANT: MH_NOUNDEFS HEX: 1
+CONSTANT: MH_INCRLINK HEX: 2
+CONSTANT: MH_DYLDLINK HEX: 4
+CONSTANT: MH_BINDATLOAD HEX: 8
+CONSTANT: MH_PREBOUND HEX: 10
+CONSTANT: MH_SPLIT_SEGS HEX: 20
+CONSTANT: MH_LAZY_INIT HEX: 40
+CONSTANT: MH_TWOLEVEL HEX: 80
+CONSTANT: MH_FORCE_FLAT HEX: 100
+CONSTANT: MH_NOMULTIDEFS HEX: 200
+CONSTANT: MH_NOFIXPREBINDING HEX: 400
+CONSTANT: MH_PREBINDABLE HEX: 800
+CONSTANT: MH_ALLMODSBOUND HEX: 1000
+CONSTANT: MH_SUBSECTIONS_VIA_SYMBOLS HEX: 2000
+CONSTANT: MH_CANONICAL HEX: 4000
+CONSTANT: MH_WEAK_DEFINES HEX: 8000
+CONSTANT: MH_BINDS_TO_WEAK HEX: 10000
+CONSTANT: MH_ALLOW_STACK_EXECUTION HEX: 20000
+CONSTANT: MH_DEAD_STRIPPABLE_DYLIB HEX: 400000
+CONSTANT: MH_ROOT_SAFE HEX: 40000
+CONSTANT: MH_SETUID_SAFE HEX: 80000
+CONSTANT: MH_NO_REEXPORTED_DYLIBS HEX: 100000
+CONSTANT: MH_PIE HEX: 200000
+
+STRUCT: load_command
+ { cmd uint32_t }
+ { cmdsize uint32_t } ;
+
+CONSTANT: LC_REQ_DYLD HEX: 80000000
+
+CONSTANT: LC_SEGMENT HEX: 1
+CONSTANT: LC_SYMTAB HEX: 2
+CONSTANT: LC_SYMSEG HEX: 3
+CONSTANT: LC_THREAD HEX: 4
+CONSTANT: LC_UNIXTHREAD HEX: 5
+CONSTANT: LC_LOADFVMLIB HEX: 6
+CONSTANT: LC_IDFVMLIB HEX: 7
+CONSTANT: LC_IDENT HEX: 8
+CONSTANT: LC_FVMFILE HEX: 9
+CONSTANT: LC_PREPAGE HEX: a
+CONSTANT: LC_DYSYMTAB HEX: b
+CONSTANT: LC_LOAD_DYLIB HEX: c
+CONSTANT: LC_ID_DYLIB HEX: d
+CONSTANT: LC_LOAD_DYLINKER HEX: e
+CONSTANT: LC_ID_DYLINKER HEX: f
+CONSTANT: LC_PREBOUND_DYLIB HEX: 10
+CONSTANT: LC_ROUTINES HEX: 11
+CONSTANT: LC_SUB_FRAMEWORK HEX: 12
+CONSTANT: LC_SUB_UMBRELLA HEX: 13
+CONSTANT: LC_SUB_CLIENT HEX: 14
+CONSTANT: LC_SUB_LIBRARY HEX: 15
+CONSTANT: LC_TWOLEVEL_HINTS HEX: 16
+CONSTANT: LC_PREBIND_CKSUM HEX: 17
+CONSTANT: LC_LOAD_WEAK_DYLIB HEX: 80000018
+CONSTANT: LC_SEGMENT_64 HEX: 19
+CONSTANT: LC_ROUTINES_64 HEX: 1a
+CONSTANT: LC_UUID HEX: 1b
+CONSTANT: LC_RPATH HEX: 8000001c
+CONSTANT: LC_CODE_SIGNATURE HEX: 1d
+CONSTANT: LC_SEGMENT_SPLIT_INFO HEX: 1e
+CONSTANT: LC_REEXPORT_DYLIB HEX: 8000001f
+CONSTANT: LC_LAZY_LOAD_DYLIB HEX: 20
+CONSTANT: LC_ENCRYPTION_INFO HEX: 21
+CONSTANT: LC_DYLD_INFO HEX: 22
+CONSTANT: LC_DYLD_INFO_ONLY HEX: 80000022
+
+UNION-STRUCT: lc_str
+ { offset uint32_t }
+ { ptr char* } ;
+
+STRUCT: segment_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { segname char[16] }
+ { vmaddr uint32_t }
+ { vmsize uint32_t }
+ { fileoff uint32_t }
+ { filesize uint32_t }
+ { maxprot vm_prot_t }
+ { initprot vm_prot_t }
+ { nsects uint32_t }
+ { flags uint32_t } ;
+
+STRUCT: segment_command_64
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { segname char[16] }
+ { vmaddr uint64_t }
+ { vmsize uint64_t }
+ { fileoff uint64_t }
+ { filesize uint64_t }
+ { maxprot vm_prot_t }
+ { initprot vm_prot_t }
+ { nsects uint32_t }
+ { flags uint32_t } ;
+
+CONSTANT: SG_HIGHVM HEX: 1
+CONSTANT: SG_FVMLIB HEX: 2
+CONSTANT: SG_NORELOC HEX: 4
+CONSTANT: SG_PROTECTED_VERSION_1 HEX: 8
+
+STRUCT: section
+ { sectname char[16] }
+ { segname char[16] }
+ { addr uint32_t }
+ { size uint32_t }
+ { offset uint32_t }
+ { align uint32_t }
+ { reloff uint32_t }
+ { nreloc uint32_t }
+ { flags uint32_t }
+ { reserved1 uint32_t }
+ { reserved2 uint32_t } ;
+
+STRUCT: section_64
+ { sectname char[16] }
+ { segname char[16] }
+ { addr uint64_t }
+ { size uint64_t }
+ { offset uint32_t }
+ { align uint32_t }
+ { reloff uint32_t }
+ { nreloc uint32_t }
+ { flags uint32_t }
+ { reserved1 uint32_t }
+ { reserved2 uint32_t }
+ { reserved3 uint32_t } ;
+
+CONSTANT: SECTION_TYPE HEX: 000000ff
+CONSTANT: SECTION_ATTRIBUTES HEX: ffffff00
+
+CONSTANT: S_REGULAR HEX: 0
+CONSTANT: S_ZEROFILL HEX: 1
+CONSTANT: S_CSTRING_LITERALS HEX: 2
+CONSTANT: S_4BYTE_LITERALS HEX: 3
+CONSTANT: S_8BYTE_LITERALS HEX: 4
+CONSTANT: S_LITERAL_POINTERS HEX: 5
+CONSTANT: S_NON_LAZY_SYMBOL_POINTERS HEX: 6
+CONSTANT: S_LAZY_SYMBOL_POINTERS HEX: 7
+CONSTANT: S_SYMBOL_STUBS HEX: 8
+CONSTANT: S_MOD_INIT_FUNC_POINTERS HEX: 9
+CONSTANT: S_MOD_TERM_FUNC_POINTERS HEX: a
+CONSTANT: S_COALESCED HEX: b
+CONSTANT: S_GB_ZEROFILL HEX: c
+CONSTANT: S_INTERPOSING HEX: d
+CONSTANT: S_16BYTE_LITERALS HEX: e
+CONSTANT: S_DTRACE_DOF HEX: f
+CONSTANT: S_LAZY_DYLIB_SYMBOL_POINTERS HEX: 10
+
+CONSTANT: SECTION_ATTRIBUTES_USR HEX: ff000000
+CONSTANT: S_ATTR_PURE_INSTRUCTIONS HEX: 80000000
+CONSTANT: S_ATTR_NO_TOC HEX: 40000000
+CONSTANT: S_ATTR_STRIP_STATIC_SYMS HEX: 20000000
+CONSTANT: S_ATTR_NO_DEAD_STRIP HEX: 10000000
+CONSTANT: S_ATTR_LIVE_SUPPORT HEX: 08000000
+CONSTANT: S_ATTR_SELF_MODIFYING_CODE HEX: 04000000
+CONSTANT: S_ATTR_DEBUG HEX: 02000000
+CONSTANT: SECTION_ATTRIBUTES_SYS HEX: 00ffff00
+CONSTANT: S_ATTR_SOME_INSTRUCTIONS HEX: 00000400
+CONSTANT: S_ATTR_EXT_RELOC HEX: 00000200
+CONSTANT: S_ATTR_LOC_RELOC HEX: 00000100
+
+CONSTANT: SEG_PAGEZERO "__PAGEZERO"
+CONSTANT: SEG_TEXT "__TEXT"
+CONSTANT: SECT_TEXT "__text"
+CONSTANT: SECT_FVMLIB_INIT0 "__fvmlib_init0"
+CONSTANT: SECT_FVMLIB_INIT1 "__fvmlib_init1"
+CONSTANT: SEG_DATA "__DATA"
+CONSTANT: SECT_DATA "__data"
+CONSTANT: SECT_BSS "__bss"
+CONSTANT: SECT_COMMON "__common"
+CONSTANT: SEG_OBJC "__OBJC"
+CONSTANT: SECT_OBJC_SYMBOLS "__symbol_table"
+CONSTANT: SECT_OBJC_MODULES "__module_info"
+CONSTANT: SECT_OBJC_STRINGS "__selector_strs"
+CONSTANT: SECT_OBJC_REFS "__selector_refs"
+CONSTANT: SEG_ICON "__ICON"
+CONSTANT: SECT_ICON_HEADER "__header"
+CONSTANT: SECT_ICON_TIFF "__tiff"
+CONSTANT: SEG_LINKEDIT "__LINKEDIT"
+CONSTANT: SEG_UNIXSTACK "__UNIXSTACK"
+CONSTANT: SEG_IMPORT "__IMPORT"
+
+STRUCT: fvmlib
+ { name lc_str }
+ { minor_version uint32_t }
+ { header_addr uint32_t } ;
+
+STRUCT: fvmlib_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { fvmlib fvmlib } ;
+
+STRUCT: dylib
+ { name lc_str }
+ { timestamp uint32_t }
+ { current_version uint32_t }
+ { compatibility_version uint32_t } ;
+
+STRUCT: dylib_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { dylib dylib } ;
+
+STRUCT: sub_framework_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { umbrella lc_str } ;
+
+STRUCT: sub_client_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { client lc_str } ;
+
+STRUCT: sub_umbrella_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { sub_umbrella lc_str } ;
+
+STRUCT: sub_library_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { sub_library lc_str } ;
+
+STRUCT: prebound_dylib_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { name lc_str }
+ { nmodules uint32_t }
+ { linked_modules lc_str } ;
+
+STRUCT: dylinker_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { name lc_str } ;
+
+STRUCT: thread_command
+ { cmd uint32_t }
+ { cmdsize uint32_t } ;
+
+STRUCT: routines_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { init_address uint32_t }
+ { init_module uint32_t }
+ { reserved1 uint32_t }
+ { reserved2 uint32_t }
+ { reserved3 uint32_t }
+ { reserved4 uint32_t }
+ { reserved5 uint32_t }
+ { reserved6 uint32_t } ;
+
+STRUCT: routines_command_64
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { init_address uint64_t }
+ { init_module uint64_t }
+ { reserved1 uint64_t }
+ { reserved2 uint64_t }
+ { reserved3 uint64_t }
+ { reserved4 uint64_t }
+ { reserved5 uint64_t }
+ { reserved6 uint64_t } ;
+
+STRUCT: symtab_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { symoff uint32_t }
+ { nsyms uint32_t }
+ { stroff uint32_t }
+ { strsize uint32_t } ;
+
+STRUCT: dysymtab_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { ilocalsym uint32_t }
+ { nlocalsym uint32_t }
+ { iextdefsym uint32_t }
+ { nextdefsym uint32_t }
+ { iundefsym uint32_t }
+ { nundefsym uint32_t }
+ { tocoff uint32_t }
+ { ntoc uint32_t }
+ { modtaboff uint32_t }
+ { nmodtab uint32_t }
+ { extrefsymoff uint32_t }
+ { nextrefsyms uint32_t }
+ { indirectsymoff uint32_t }
+ { nindirectsyms uint32_t }
+ { extreloff uint32_t }
+ { nextrel uint32_t }
+ { locreloff uint32_t }
+ { nlocrel uint32_t } ;
+
+CONSTANT: INDIRECT_SYMBOL_LOCAL HEX: 80000000
+CONSTANT: INDIRECT_SYMBOL_ABS HEX: 40000000
+
+STRUCT: dylib_table_of_contents
+ { symbol_index uint32_t }
+ { module_index uint32_t } ;
+
+STRUCT: dylib_module
+ { module_name uint32_t }
+ { iextdefsym uint32_t }
+ { nextdefsym uint32_t }
+ { irefsym uint32_t }
+ { nrefsym uint32_t }
+ { ilocalsym uint32_t }
+ { nlocalsym uint32_t }
+ { iextrel uint32_t }
+ { nextrel uint32_t }
+ { iinit_iterm uint32_t }
+ { ninit_nterm uint32_t }
+ { objc_module_info_addr uint32_t }
+ { objc_module_info_size uint32_t } ;
+
+STRUCT: dylib_module_64
+ { module_name uint32_t }
+ { iextdefsym uint32_t }
+ { nextdefsym uint32_t }
+ { irefsym uint32_t }
+ { nrefsym uint32_t }
+ { ilocalsym uint32_t }
+ { nlocalsym uint32_t }
+ { iextrel uint32_t }
+ { nextrel uint32_t }
+ { iinit_iterm uint32_t }
+ { ninit_nterm uint32_t }
+ { objc_module_info_size uint32_t }
+ { objc_module_info_addr uint64_t } ;
+
+STRUCT: dylib_reference
+ { isym_flags uint32_t } ;
+
+STRUCT: twolevel_hints_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { offset uint32_t }
+ { nhints uint32_t } ;
+
+STRUCT: twolevel_hint
+ { isub_image_itoc uint32_t } ;
+
+STRUCT: prebind_cksum_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { cksum uint32_t } ;
+
+STRUCT: uuid_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { uuid uint8_t[16] } ;
+
+STRUCT: rpath_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { path lc_str } ;
+
+STRUCT: linkedit_data_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { dataoff uint32_t }
+ { datasize uint32_t } ;
+
+STRUCT: encryption_info_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { cryptoff uint32_t }
+ { cryptsize uint32_t }
+ { cryptid uint32_t } ;
+
+STRUCT: dyld_info_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { rebase_off uint32_t }
+ { rebase_size uint32_t }
+ { bind_off uint32_t }
+ { bind_size uint32_t }
+ { weak_bind_off uint32_t }
+ { weak_bind_size uint32_t }
+ { lazy_bind_off uint32_t }
+ { lazy_bind_size uint32_t }
+ { export_off uint32_t }
+ { export_size uint32_t } ;
+
+CONSTANT: REBASE_TYPE_POINTER 1
+CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32 2
+CONSTANT: REBASE_TYPE_TEXT_PCREL32 3
+
+CONSTANT: REBASE_OPCODE_MASK HEX: F0
+CONSTANT: REBASE_IMMEDIATE_MASK HEX: 0F
+CONSTANT: REBASE_OPCODE_DONE HEX: 00
+CONSTANT: REBASE_OPCODE_SET_TYPE_IMM HEX: 10
+CONSTANT: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 20
+CONSTANT: REBASE_OPCODE_ADD_ADDR_ULEB HEX: 30
+CONSTANT: REBASE_OPCODE_ADD_ADDR_IMM_SCALED HEX: 40
+CONSTANT: REBASE_OPCODE_DO_REBASE_IMM_TIMES HEX: 50
+CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES HEX: 60
+CONSTANT: REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB HEX: 70
+CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB HEX: 80
+
+CONSTANT: BIND_TYPE_POINTER 1
+CONSTANT: BIND_TYPE_TEXT_ABSOLUTE32 2
+CONSTANT: BIND_TYPE_TEXT_PCREL32 3
+
+CONSTANT: BIND_SPECIAL_DYLIB_SELF 0
+CONSTANT: BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
+CONSTANT: BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
+
+CONSTANT: BIND_SYMBOL_FLAGS_WEAK_IMPORT HEX: 1
+CONSTANT: BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION HEX: 8
+
+CONSTANT: BIND_OPCODE_MASK HEX: F0
+CONSTANT: BIND_IMMEDIATE_MASK HEX: 0F
+CONSTANT: BIND_OPCODE_DONE HEX: 00
+CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM HEX: 10
+CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB HEX: 20
+CONSTANT: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM HEX: 30
+CONSTANT: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM HEX: 40
+CONSTANT: BIND_OPCODE_SET_TYPE_IMM HEX: 50
+CONSTANT: BIND_OPCODE_SET_ADDEND_SLEB HEX: 60
+CONSTANT: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB HEX: 70
+CONSTANT: BIND_OPCODE_ADD_ADDR_ULEB HEX: 80
+CONSTANT: BIND_OPCODE_DO_BIND HEX: 90
+CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB HEX: A0
+CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED HEX: B0
+CONSTANT: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB HEX: C0
+
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_MASK HEX: 03
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_REGULAR HEX: 00
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL HEX: 01
+CONSTANT: EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION HEX: 04
+CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION HEX: 08
+CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS HEX: 10
+
+STRUCT: symseg_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { offset uint32_t }
+ { size uint32_t } ;
+
+STRUCT: ident_command
+ { cmd uint32_t }
+ { cmdsize uint32_t } ;
+
+STRUCT: fvmfile_command
+ { cmd uint32_t }
+ { cmdsize uint32_t }
+ { name lc_str }
+ { header_addr uint32_t } ;
+
+! machine.h
+CONSTANT: CPU_STATE_MAX 4
+CONSTANT: CPU_STATE_USER 0
+CONSTANT: CPU_STATE_SYSTEM 1
+CONSTANT: CPU_STATE_IDLE 2
+CONSTANT: CPU_STATE_NICE 3
+
+CONSTANT: CPU_ARCH_MASK HEX: ff000000
+CONSTANT: CPU_ARCH_ABI64 HEX: 01000000
+
+CONSTANT: CPU_TYPE_ANY -1
+CONSTANT: CPU_TYPE_VAX 1
+CONSTANT: CPU_TYPE_MC680x0 6
+CONSTANT: CPU_TYPE_X86 7
+CONSTANT: CPU_TYPE_I386 $ CPU_TYPE_X86
+CONSTANT: CPU_TYPE_X86_64 $[ CPU_TYPE_X86 CPU_ARCH_ABI64 bitor ]
+CONSTANT: CPU_TYPE_MC98000 10
+CONSTANT: CPU_TYPE_HPPA 11
+CONSTANT: CPU_TYPE_ARM 12
+CONSTANT: CPU_TYPE_MC88000 13
+CONSTANT: CPU_TYPE_SPARC 14
+CONSTANT: CPU_TYPE_I860 15
+CONSTANT: CPU_TYPE_POWERPC 18
+CONSTANT: CPU_TYPE_POWERPC64 $[ $ CPU_TYPE_POWERPC CPU_ARCH_ABI64 bitor ]
+
+CONSTANT: CPU_SUBTYPE_MASK HEX: ff000000
+CONSTANT: CPU_SUBTYPE_LIB64 HEX: 80000000
+
+CONSTANT: CPU_SUBTYPE_MULTIPLE -1
+CONSTANT: CPU_SUBTYPE_LITTLE_ENDIAN 0
+CONSTANT: CPU_SUBTYPE_BIG_ENDIAN 1
+
+CONSTANT: CPU_THREADTYPE_NONE 0
+
+CONSTANT: CPU_SUBTYPE_VAX_ALL 0
+CONSTANT: CPU_SUBTYPE_VAX780 1
+CONSTANT: CPU_SUBTYPE_VAX785 2
+CONSTANT: CPU_SUBTYPE_VAX750 3
+CONSTANT: CPU_SUBTYPE_VAX730 4
+CONSTANT: CPU_SUBTYPE_UVAXI 5
+CONSTANT: CPU_SUBTYPE_UVAXII 6
+CONSTANT: CPU_SUBTYPE_VAX8200 7
+CONSTANT: CPU_SUBTYPE_VAX8500 8
+CONSTANT: CPU_SUBTYPE_VAX8600 9
+CONSTANT: CPU_SUBTYPE_VAX8650 10
+CONSTANT: CPU_SUBTYPE_VAX8800 11
+CONSTANT: CPU_SUBTYPE_UVAXIII 12
+
+CONSTANT: CPU_SUBTYPE_MC680x0_ALL 1
+CONSTANT: CPU_SUBTYPE_MC68030 1
+CONSTANT: CPU_SUBTYPE_MC68040 2
+CONSTANT: CPU_SUBTYPE_MC68030_ONLY 3
+
+: CPU_SUBTYPE_INTEL ( f m -- subtype ) 4 shift + ; inline
+
+CONSTANT: CPU_SUBTYPE_I386_ALL 3
+CONSTANT: CPU_SUBTYPE_386 3
+CONSTANT: CPU_SUBTYPE_486 4
+CONSTANT: CPU_SUBTYPE_486SX 132
+CONSTANT: CPU_SUBTYPE_586 5
+CONSTANT: CPU_SUBTYPE_PENT 5
+CONSTANT: CPU_SUBTYPE_PENTPRO 22
+CONSTANT: CPU_SUBTYPE_PENTII_M3 54
+CONSTANT: CPU_SUBTYPE_PENTII_M5 86
+CONSTANT: CPU_SUBTYPE_CELERON 103
+CONSTANT: CPU_SUBTYPE_CELERON_MOBILE 119
+CONSTANT: CPU_SUBTYPE_PENTIUM_3 8
+CONSTANT: CPU_SUBTYPE_PENTIUM_3_M 24
+CONSTANT: CPU_SUBTYPE_PENTIUM_3_XEON 40
+CONSTANT: CPU_SUBTYPE_PENTIUM_M 9
+CONSTANT: CPU_SUBTYPE_PENTIUM_4 10
+CONSTANT: CPU_SUBTYPE_PENTIUM_4_M 26
+CONSTANT: CPU_SUBTYPE_ITANIUM 11
+CONSTANT: CPU_SUBTYPE_ITANIUM_2 27
+CONSTANT: CPU_SUBTYPE_XEON 12
+CONSTANT: CPU_SUBTYPE_XEON_MP 28
+
+: CPU_SUBTYPE_INTEL_FAMILY ( x -- family ) 15 bitand ; inline
+
+CONSTANT: CPU_SUBTYPE_INTEL_FAMILY_MAX 15
+
+: CPU_SUBTYPE_INTEL_MODEL ( x -- model ) -4 shift ; inline
+
+CONSTANT: CPU_SUBTYPE_INTEL_MODEL_ALL 0
+CONSTANT: CPU_SUBTYPE_X86_ALL 3
+CONSTANT: CPU_SUBTYPE_X86_64_ALL 3
+CONSTANT: CPU_SUBTYPE_X86_ARCH1 4
+CONSTANT: CPU_THREADTYPE_INTEL_HTT 1
+
+CONSTANT: CPU_SUBTYPE_MIPS_ALL 0
+CONSTANT: CPU_SUBTYPE_MIPS_R2300 1
+CONSTANT: CPU_SUBTYPE_MIPS_R2600 2
+CONSTANT: CPU_SUBTYPE_MIPS_R2800 3
+CONSTANT: CPU_SUBTYPE_MIPS_R2000a 4
+CONSTANT: CPU_SUBTYPE_MIPS_R2000 5
+CONSTANT: CPU_SUBTYPE_MIPS_R3000a 6
+CONSTANT: CPU_SUBTYPE_MIPS_R3000 7
+
+CONSTANT: CPU_SUBTYPE_MC98000_ALL 0
+CONSTANT: CPU_SUBTYPE_MC98601 1
+
+CONSTANT: CPU_SUBTYPE_HPPA_ALL 0
+CONSTANT: CPU_SUBTYPE_HPPA_7100 0
+CONSTANT: CPU_SUBTYPE_HPPA_7100LC 1
+
+CONSTANT: CPU_SUBTYPE_MC88000_ALL 0
+CONSTANT: CPU_SUBTYPE_MC88100 1
+CONSTANT: CPU_SUBTYPE_MC88110 2
+
+CONSTANT: CPU_SUBTYPE_SPARC_ALL 0
+
+CONSTANT: CPU_SUBTYPE_I860_ALL 0
+CONSTANT: CPU_SUBTYPE_I860_860 1
+
+CONSTANT: CPU_SUBTYPE_POWERPC_ALL 0
+CONSTANT: CPU_SUBTYPE_POWERPC_601 1
+CONSTANT: CPU_SUBTYPE_POWERPC_602 2
+CONSTANT: CPU_SUBTYPE_POWERPC_603 3
+CONSTANT: CPU_SUBTYPE_POWERPC_603e 4
+CONSTANT: CPU_SUBTYPE_POWERPC_603ev 5
+CONSTANT: CPU_SUBTYPE_POWERPC_604 6
+CONSTANT: CPU_SUBTYPE_POWERPC_604e 7
+CONSTANT: CPU_SUBTYPE_POWERPC_620 8
+CONSTANT: CPU_SUBTYPE_POWERPC_750 9
+CONSTANT: CPU_SUBTYPE_POWERPC_7400 10
+CONSTANT: CPU_SUBTYPE_POWERPC_7450 11
+CONSTANT: CPU_SUBTYPE_POWERPC_970 100
+
+CONSTANT: CPU_SUBTYPE_ARM_ALL 0
+CONSTANT: CPU_SUBTYPE_ARM_V4T 5
+CONSTANT: CPU_SUBTYPE_ARM_V6 6
+CONSTANT: CPU_SUBTYPE_ARM_V5TEJ 7
+CONSTANT: CPU_SUBTYPE_ARM_XSCALE 8
+CONSTANT: CPU_SUBTYPE_ARM_V7 9
+
+CONSTANT: CPUFAMILY_UNKNOWN 0
+CONSTANT: CPUFAMILY_POWERPC_G3 HEX: cee41549
+CONSTANT: CPUFAMILY_POWERPC_G4 HEX: 77c184ae
+CONSTANT: CPUFAMILY_POWERPC_G5 HEX: ed76d8aa
+CONSTANT: CPUFAMILY_INTEL_6_13 HEX: aa33392b
+CONSTANT: CPUFAMILY_INTEL_6_14 HEX: 73d67300
+CONSTANT: CPUFAMILY_INTEL_6_15 HEX: 426f69ef
+CONSTANT: CPUFAMILY_INTEL_6_23 HEX: 78ea4fbc
+CONSTANT: CPUFAMILY_INTEL_6_26 HEX: 6b5a4cd2
+CONSTANT: CPUFAMILY_ARM_9 HEX: e73283ae
+CONSTANT: CPUFAMILY_ARM_11 HEX: 8ff620d8
+CONSTANT: CPUFAMILY_ARM_XSCALE HEX: 53b005f5
+CONSTANT: CPUFAMILY_ARM_13 HEX: 0cc90e64
+
+CONSTANT: CPUFAMILY_INTEL_YONAH $ CPUFAMILY_INTEL_6_14
+CONSTANT: CPUFAMILY_INTEL_MEROM $ CPUFAMILY_INTEL_6_15
+CONSTANT: CPUFAMILY_INTEL_PENRYN $ CPUFAMILY_INTEL_6_23
+CONSTANT: CPUFAMILY_INTEL_NEHALEM $ CPUFAMILY_INTEL_6_26
+
+CONSTANT: CPUFAMILY_INTEL_CORE $ CPUFAMILY_INTEL_6_14
+CONSTANT: CPUFAMILY_INTEL_CORE2 $ CPUFAMILY_INTEL_6_15
+
+! fat.h
+CONSTANT: FAT_MAGIC HEX: cafebabe
+CONSTANT: FAT_CIGAM HEX: bebafeca
+
+STRUCT: fat_header
+ { magic uint32_t }
+ { nfat_arch uint32_t } ;
+
+STRUCT: fat_arch
+ { cputype cpu_type_t }
+ { cpusubtype cpu_subtype_t }
+ { offset uint32_t }
+ { size uint32_t }
+ { align uint32_t } ;
+
+! nlist.h
+STRUCT: nlist
+ { n_strx int32_t }
+ { n_type uint8_t }
+ { n_sect uint8_t }
+ { n_desc int16_t }
+ { n_value uint32_t } ;
+
+STRUCT: nlist_64
+ { n_strx uint32_t }
+ { n_type uint8_t }
+ { n_sect uint8_t }
+ { n_desc uint16_t }
+ { n_value uint64_t } ;
+
+CONSTANT: N_STAB HEX: e0
+CONSTANT: N_PEXT HEX: 10
+CONSTANT: N_TYPE HEX: 0e
+CONSTANT: N_EXT HEX: 01
+
+CONSTANT: N_UNDF HEX: 0
+CONSTANT: N_ABS HEX: 2
+CONSTANT: N_SECT HEX: e
+CONSTANT: N_PBUD HEX: c
+CONSTANT: N_INDR HEX: a
+
+CONSTANT: NO_SECT 0
+CONSTANT: MAX_SECT 255
+
+: GET_COMM_ALIGN ( n_desc -- align )
+ -8 shift HEX: 0f bitand ; inline
+
+: SET_COMM_ALIGN ( n_desc align -- n_desc )
+ [ HEX: f0ff bitand ]
+ [ HEX: 000f bitand 8 shift ] bi* bitor ; inline
+
+CONSTANT: REFERENCE_TYPE 7
+CONSTANT: REFERENCE_FLAG_UNDEFINED_NON_LAZY 0
+CONSTANT: REFERENCE_FLAG_UNDEFINED_LAZY 1
+CONSTANT: REFERENCE_FLAG_DEFINED 2
+CONSTANT: REFERENCE_FLAG_PRIVATE_DEFINED 3
+CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 4
+CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 5
+
+CONSTANT: REFERENCED_DYNAMICALLY HEX: 0010
+
+: GET_LIBRARY_ORDINAL ( n_desc -- ordinal )
+ -8 shift HEX: ff bitand ; inline
+
+: SET_LIBRARY_ORDINAL ( n_desc ordinal -- n_desc )
+ [ HEX: 00ff bitand ]
+ [ HEX: 00ff bitand 8 shift ] bi* bitor ; inline
+
+CONSTANT: SELF_LIBRARY_ORDINAL HEX: 0
+CONSTANT: MAX_LIBRARY_ORDINAL HEX: fd
+CONSTANT: DYNAMIC_LOOKUP_ORDINAL HEX: fe
+CONSTANT: EXECUTABLE_ORDINAL HEX: ff
+
+CONSTANT: N_NO_DEAD_STRIP HEX: 0020
+CONSTANT: N_DESC_DISCARDED HEX: 0020
+CONSTANT: N_WEAK_REF HEX: 0040
+CONSTANT: N_WEAK_DEF HEX: 0080
+CONSTANT: N_REF_TO_WEAK HEX: 0080
+CONSTANT: N_ARM_THUMB_DEF HEX: 0008
+
+! ranlib.h
+CONSTANT: SYMDEF "__.SYMDEF"
+CONSTANT: SYMDEF_SORTED "__.SYMDEF SORTED"
+
+STRUCT: ranlib
+ { ran_strx uint32_t }
+ { ran_off uint32_t } ;
+
+! reloc.h
+STRUCT: relocation_info
+ { r_address int32_t }
+ { r_symbolnum_pcrel_length_extern_type uint32_t } ;
+
+CONSTANT: R_ABS 0
+CONSTANT: R_SCATTERED HEX: 80000000
+
+STRUCT: scattered_relocation_info_big_endian
+ { r_scattered_pcrel_length_type_address uint32_t }
+ { r_value int32_t } ;
+
+STRUCT: scattered_relocation_info_little_endian
+ { r_address_type_length_pcrel_scattered uint32_t }
+ { r_value int32_t } ;
+
+C-ENUM: reloc_type_generic
+ GENERIC_RELOC_VANILLA
+ GENERIC_RELOC_PAIR
+ GENERIC_RELOC_SECTDIFF
+ GENERIC_RELOC_PB_LA_PTR
+ GENERIC_RELOC_LOCAL_SECTDIFF ;
+
+C-ENUM: reloc_type_x86_64
+ X86_64_RELOC_UNSIGNED
+ X86_64_RELOC_SIGNED
+ X86_64_RELOC_BRANCH
+ X86_64_RELOC_GOT_LOAD
+ X86_64_RELOC_GOT
+ X86_64_RELOC_SUBTRACTOR
+ X86_64_RELOC_SIGNED_1
+ X86_64_RELOC_SIGNED_2
+ X86_64_RELOC_SIGNED_4 ;
+
+C-ENUM: reloc_type_ppc
+ PPC_RELOC_VANILLA
+ PPC_RELOC_PAIR
+ PPC_RELOC_BR14
+ PPC_RELOC_BR24
+ PPC_RELOC_HI16
+ PPC_RELOC_LO16
+ PPC_RELOC_HA16
+ PPC_RELOC_LO14
+ PPC_RELOC_SECTDIFF
+ PPC_RELOC_PB_LA_PTR
+ PPC_RELOC_HI16_SECTDIFF
+ PPC_RELOC_LO16_SECTDIFF
+ PPC_RELOC_HA16_SECTDIFF
+ PPC_RELOC_JBSR
+ PPC_RELOC_LO14_SECTDIFF
+ PPC_RELOC_LOCAL_SECTDIFF ;
--- /dev/null
+Constants and structs related to the Mach object format.
TYPEDEF: void* TCADB
-C-ENUM:
+C-ENUM: f
ADBOVOID
ADBOMDB
ADBONDB
TYPEDEF: void* BDBCUR
-C-ENUM:
+C-ENUM: f
BDBCPCURRENT
BDBCPBEFORE
BDBCPAFTER ;
! { timeout double }
! { opts int } ;
-C-ENUM:
+C-ENUM: f
TTESUCCESS
TTEINVALID
TTENOHOST
CONSTANT: TDBOLCKNB 32
CONSTANT: TDBOTSYNC 64
-C-ENUM:
+C-ENUM: f
TDBITLEXICAL
TDBITDECIMAL ;
C-TYPE: TDBCOND
C-TYPE: TDBQRY
-C-ENUM:
+C-ENUM: f
TDBQCSTREQ
TDBQCSTRINC
TDBQCSTRBW
CONSTANT: TDBQCNEGATE 16777216
CONSTANT: TDBQCNOIDX 33554432
-C-ENUM:
+C-ENUM: f
TDBQOSTRASC
TDBQOSTRDESC
TDBQONUMASC
LIBRARY: tokyocabinet
-C-ENUM:
+C-ENUM: f
TCDBTHASH
TCDBTBTREE
TCDBTFIXED
(,fuel-syntax--type-definition-regex 2 'factor-font-lock-type-name)
(,fuel-syntax--method-definition-regex (1 'factor-font-lock-type-name)
(2 'factor-font-lock-word))
+ (,fuel-syntax--before-definition-regex (1 'factor-font-lock-type-name)
+ (2 'factor-font-lock-word))
+ (,fuel-syntax--after-definition-regex (1 'factor-font-lock-type-name)
+ (2 'factor-font-lock-word))
(,fuel-syntax--tuple-decl-regex 2 'factor-font-lock-type-name)
(,fuel-syntax--constructor-regex . 'factor-font-lock-constructor)
(,fuel-syntax--setter-regex . 'factor-font-lock-setter-word)
\r
(defconst fuel-syntax--parsing-words\r
'(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"\r
- "ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:"\r
- "B" "BIN:"\r
+ "ABOUT:" "AFTER:" "ALIAS:" "ALIEN:" "ARTICLE:"\r
+ "B" "BEFORE:" "BIN:"\r
"C:" "CALLBACK:" "C-ENUM:" "C-STRUCT:" "C-TYPE:" "C-UNION:" "CHAR:" "COM-INTERFACE:" "CONSTANT:" "call-next-method"\r
"DEFER:"\r
"EBNF:" ";EBNF" "ERROR:" "EXCLUDE:"\r
(defconst fuel-syntax--method-definition-regex\r
"^M::? +\\([^ ]+\\) +\\([^ ]+\\)")\r
\r
+(defconst fuel-syntax--before-definition-regex\r
+ "^BEFORE: +\\([^ ]+\\) +\\([^ ]+\\)")\r
+\r
+(defconst fuel-syntax--after-definition-regex\r
+ "^AFTER: +\\([^ ]+\\) +\\([^ ]+\\)")\r
+\r
(defconst fuel-syntax--integer-regex\r
"\\_<-?[0-9]+\\_>")\r
\r
(format "\\_<\\(%s\\)?: +\\_<\\(\\w+\\)\\_>"\r
(regexp-opt\r
'(":" "GENERIC" "DEFER" "HOOK" "MAIN" "MATH" "POSTPONE"\r
- "SYMBOL" "SYNTAX" "TYPED" "RENAME"))))\r
+ "SYMBOL" "SYNTAX" "TYPED" "TYPED:" "RENAME"))))\r
\r
(defconst fuel-syntax--alias-definition-regex\r
"^ALIAS: +\\(\\_<.+?\\_>\\) +\\(\\_<.+?\\_>\\)")\r
"\\_<CALLBACK: \\(\\w+\\) \\(\\w+\\)")\r
\r
(defconst fuel-syntax--indent-def-starts '("" ":"\r
+ "AFTER" "BEFORE"\r
"C-ENUM" "C-STRUCT" "C-UNION" "COM-INTERFACE"\r
"FROM" "FUNCTION:"\r
"INTERSECTION:"\r
! Internal keyset options
! (As _NONE but open for exclusive access, _CRYPT_DEFINED
! Last possible key option type, _CRYPT_DEFINED Last external keyset option)
-C-ENUM:
+C-ENUM: f
CRYPT_KEYOPT_NONE
CRYPT_KEYOPT_READONLY
CRYPT_KEYOPT_CREATE
: HPDF_COMP_MASK HEX: FF ; inline
! page mode
-C-ENUM:
+C-ENUM: f
HPDF_PAGE_MODE_USE_NONE
HPDF_PAGE_MODE_USE_OUTLINE
HPDF_PAGE_MODE_USE_THUMBS