# -*- encoding:utf-8; warn-indent:false; frozen_string_literal: true -*- # line 1 "lib/parser/lexer.rl" # line 3 "lib/parser/lexer.rl" # # === BEFORE YOU START === # # Read the Ruby Hacking Guide chapter 11, available in English at # http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/ # # Remember two things about Ragel scanners: # # 1) Longest match wins. # # 2) If two matches have the same length, the first # in source code wins. # # General rules of making Ragel and Bison happy: # # * `p` (position) and `@te` contain the index of the character # they're pointing to ("current"), plus one. `@ts` contains the index # of the corresponding character. The code for extracting matched token is: # # @source[@ts...@te] # # * If your input is `foooooooobar` and the rule is: # # 'f' 'o'+ # # the result will be: # # foooooooobar # ^ ts=0 ^ p=te=9 # # * A Ragel lexer action should not emit more than one token, unless # you know what you are doing. # # * All Ragel commands (fnext, fgoto, ...) end with a semicolon. # # * If an action emits the token and transitions to another state, use # these Ragel commands: # # emit($whatever) # fnext $next_state; fbreak; # # If you perform `fgoto` in an action which does not emit a token nor # rewinds the stream pointer, the parser's side-effectful, # context-sensitive lookahead actions will break in a hard to detect # and debug way. # # * If an action does not emit a token: # # fgoto $next_state; # # * If an action features lookbehind, i.e. matches characters with the # intent of passing them to another action: # # p = @ts - 1 # fgoto $next_state; # # or, if the lookbehind consists of a single character: # # fhold; fgoto $next_state; # # * Ragel merges actions. So, if you have `e_lparen = '(' %act` and # `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result # _will_ invoke the action `act`. # # e_something stands for "something with **e**mbedded action". # # * EOF is explicit and is matched by `c_eof`. If you want to introspect # the state of the lexer, add this rule to the state: # # c_eof => do_eof; # # * If you proceed past EOF, the lexer will complain: # # NoMethodError: undefined method `ord' for nil:NilClass # class Parser::Lexer # line 85 "lib/parser/lexer.rb" class << self attr_accessor :_lex_trans_keys private :_lex_trans_keys, :_lex_trans_keys= end self._lex_trans_keys = [ 0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 93, 93, 0, 127, 0, 127, 10, 10, 10, 34, 10, 10, 10, 39, 0, 127, 10, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 58, 58, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 65, 122, 0, 122, 38, 61, 0, 0, 42, 61, 61, 61, 48, 61, 48, 62, 46, 46, 46, 46, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 124, 124, 60, 61, 0, 0, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0 ] class << self attr_accessor :_lex_key_spans private :_lex_key_spans, :_lex_key_spans= end self._lex_key_spans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 1, 1, 1, 1, 1, 1, 123, 1, 128, 128, 66, 128, 128, 1, 128, 128, 1, 25, 1, 30, 128, 87, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 0, 55, 0, 93, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 0, 128, 128, 1, 0, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 1, 24, 1, 24, 66, 1, 1, 58, 123, 24, 0, 20, 1, 14, 15, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 1, 2, 0, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 0, 55, 0, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 54, 48, 75, 67, 15, 58, 0, 1, 0, 67, 67, 67, 67, 10, 0, 1, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3542, 3671, 3673, 3675, 3677, 3679, 3808, 3937, 4066, 4195, 4324, 4453, 4582, 4711, 4840, 4969, 5098, 5227, 5356, 5485, 5614, 5743, 5872, 6001, 6003, 6005, 6007, 6009, 6019, 6021, 6023, 6025, 6027, 6029, 6031, 6033, 6035, 6164, 6166, 6295, 6297, 6299, 6301, 6303, 6305, 6307, 6431, 6433, 6562, 6691, 6758, 6887, 7016, 7018, 7147, 7276, 7278, 7304, 7306, 7337, 7466, 7554, 7601, 7680, 7759, 7853, 7881, 7909, 7956, 8057, 8085, 8119, 8121, 8215, 8294, 8398, 8527, 8656, 8785, 8914, 9043, 9172, 9174, 9176, 9305, 9321, 9332, 9343, 9354, 9365, 9494, 9496, 9581, 9666, 9751, 9836, 9921, 10006, 10008, 10010, 10049, 10051, 10148, 10173, 10174, 10176, 10178, 10180, 10205, 10207, 10209, 10303, 10328, 10417, 10546, 10557, 10679, 10680, 10681, 10690, 10699, 10700, 10701, 10795, 10796, 10797, 10798, 10892, 10894, 10895, 10896, 10897, 10991, 11038, 11132, 11226, 11227, 11228, 11322, 11369, 11371, 11465, 11590, 11618, 11646, 11674, 11675, 11779, 11883, 11987, 11988, 12115, 12242, 12369, 12496, 12623, 12624, 12751, 12878, 12879, 13006, 13034, 13161, 13288, 13415, 13542, 13669, 13796, 13923, 14050, 14177, 14304, 14305, 14432, 14433, 14434, 14490, 14491, 14585, 14674, 14803, 14814, 14936, 14937, 14938, 14947, 14956, 14957, 14958, 15052, 15053, 15054, 15055, 15149, 15151, 15152, 15153, 15154, 15248, 15295, 15389, 15483, 15484, 15485, 15579, 15626, 15628, 15722, 15847, 15875, 15903, 15931, 15932, 16036, 16140, 16244, 16245, 16372, 16499, 16626, 16753, 16880, 16881, 17008, 17135, 17136, 17263, 17291, 17418, 17545, 17672, 17799, 17926, 18053, 18180, 18307, 18434, 18561, 18562, 18689, 18690, 18691, 18747, 18748, 18842, 18867, 18895, 18989, 19017, 19076, 19135, 19165, 19294, 19305, 19434, 19563, 19692, 19821, 19846, 19847, 19914, 19916, 19918, 20047, 20176, 20187, 20189, 20191, 20193, 20195, 20198, 20200, 20267, 20269, 20272, 20401, 20530, 20659, 20788, 20917, 21046, 21175, 21177, 21179, 21308, 21437, 21566, 21695, 21824, 21953, 22082, 22211, 22340, 22469, 22598, 22727, 22856, 22985, 23114, 23243, 23372, 23501, 23630, 23759, 23888, 24017, 24146, 24275, 24404, 24533, 24662, 24791, 24920, 25049, 25178, 25307, 25436, 25565, 25694, 25823, 25952, 26081, 26210, 26339, 26468, 26597, 26726, 26855, 26984, 27113, 27242, 27371, 27500, 27629, 27758, 27887, 28016, 28145, 28274, 28403, 28532, 28661, 28790, 28919, 29048, 29177, 29306, 29435, 29564, 29693, 29822, 29951, 30080, 30209, 30338, 30467, 30596, 30725, 30854, 30983, 31112, 31241, 31370, 31499, 31628, 31757, 31886, 31888, 32017, 32146, 32171, 32173, 32175, 32177, 32178, 32307, 32436, 32438, 32439, 32440, 32465, 32466, 32533, 32535, 32537, 32539, 32541, 32543, 32546, 32548, 32615, 32617, 32620, 32749, 32751, 32753, 32755, 32883, 33012, 33075, 33129, 33183, 33184, 33238, 33293, 33295, 33297, 33299, 33324, 33325, 33454, 33455, 33572, 33573, 33575, 33577, 33578, 33632, 33634, 33636, 33638, 33663, 33665, 33794, 33796, 33798, 33800, 33802, 33931, 34060, 34189, 34190, 34319, 34321, 34446, 34471, 34473, 34475, 34477, 34478, 34480, 34481, 34610, 34739, 34764, 34765, 34767, 34769, 34771, 34772, 34901, 35030, 35159, 35288, 35417, 35546, 35675, 35804, 35933, 36062, 36191, 36320, 36449, 36578, 36707, 36836, 36965, 37094, 37099, 37100, 37167, 37169, 37170, 37171, 37172, 37174, 37199, 37201, 37226, 37293, 37295, 37297, 37356, 37480, 37505, 37506, 37527, 37529, 37544, 37560, 37562, 37564, 37592, 37721, 37850, 37852, 37853, 37920, 37923, 37924, 37925, 37926, 37927, 37928, 37995, 38124, 38135, 38137, 38139, 38141, 38144, 38146, 38148, 38151, 38153, 38156, 38157, 38159, 38226, 38229, 38353, 38354, 38483, 38612, 38734, 38735, 38736, 38745, 38754, 38755, 38756, 38850, 38851, 38852, 38853, 38947, 38949, 38950, 38951, 38952, 39046, 39093, 39187, 39281, 39282, 39283, 39377, 39424, 39426, 39520, 39645, 39673, 39701, 39729, 39730, 39834, 39938, 40042, 40043, 40170, 40297, 40424, 40551, 40678, 40679, 40806, 40933, 40934, 41061, 41089, 41216, 41343, 41470, 41597, 41724, 41851, 41978, 42105, 42232, 42359, 42360, 42487, 42488, 42489, 42545, 42546, 42675, 42804, 42933, 42934, 42936, 42937, 43066, 43195, 43324, 43453, 43582, 43711, 43840, 43969, 44098, 44227, 44356, 44485, 44614, 44743, 44872, 45001, 45130, 45259, 45388, 45517, 45646, 45775, 45904, 46033, 46162, 46291, 46420, 46549, 46678, 46807, 46936, 47065, 47194, 47323, 47452, 47581, 47710, 47839, 47968, 48097, 48226, 48355, 48484, 48613, 48742, 48871, 49000, 49129, 49258, 49387, 49516, 49645, 49774, 49903, 50032, 50161, 50290, 50419, 50548, 50677, 50744, 50873, 51002, 51131, 51260, 51389, 51518, 51647, 51776, 51905, 52034, 52163, 52292, 52421, 52550, 52679, 52808, 52937, 53066, 53195, 53324, 53453, 53582, 53711, 53840, 53969, 53970, 54035, 54129, 54154, 54155, 54157, 54159, 54161, 54162, 54291, 54420, 54445, 54446, 54448, 54450, 54452, 54453, 54582, 54711, 54713, 54714, 54715, 54740, 54741, 54808, 54810, 54812, 54941, 55070, 55081, 55083, 55108, 55109, 55110, 55131, 55134, 55147, 55149, 55204, 55253, 55329, 55397, 55413, 55472, 55473, 55475, 55476, 55544, 55612, 55680, 55748, 55759, 55760, 55762, 55763, 55831, 55899, 55967, 56035, 56103, 56171, 56239, 56307, 56377, 56445, 56515, 56583, 56585, 56588, 56590, 56657, 56659, 56662, 56791, 56920, 56921, 57050, 57179, 57308, 57437, 57566, 57695, 57696, 57698, 57699, 57828, 57957, 58086, 58215, 58344, 58473, 58602, 58731, 58860, 58989, 59118, 59247, 59376, 59505, 59634, 59763, 59892, 60021, 60150, 60279, 60408, 60537, 60666, 60795, 60924, 61053, 61182, 61311, 61440, 61569, 61698, 61827, 61956, 62085, 62214, 62343, 62472, 62557, 62686, 62815, 62944, 63073, 63202, 63331, 63460, 63589, 63718, 63847, 63976, 64105, 64234, 64363, 64492, 64621, 64750, 64879, 65008, 65137, 65266, 65395, 65524, 65653, 65782, 65911, 66040, 66169, 66298, 66427, 66556, 66685, 66814, 66943, 67072, 67201, 67330, 67459, 67588, 67717, 67846, 67975, 68104, 68233, 68362, 68491, 68620, 68749, 68878, 69007, 69136, 69265, 69394, 69523, 69652, 69781, 69910, 70039, 70168, 70297, 70426, 70555, 70684, 70813, 70942, 70943, 71008, 71009, 71048, 71087, 71089, 71142, 71144, 71237, 71339, 71431 ] class << self attr_accessor :_lex_indicies private :_lex_indicies, :_lex_indicies= end self._lex_indicies = [ 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 21, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 34, 31, 31, 31, 31, 31, 31, 35, 31, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 37, 18, 18, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 43, 45, 43, 45, 45, 43, 43, 45, 45, 45, 46, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 45, 43, 43, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 45, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 50, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 52, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 61, 50, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 66, 62, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 67, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68, 49, 68, 49, 49, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 75, 75, 76, 75, 76, 75, 75, 76, 76, 75, 75, 75, 77, 75, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 75, 76, 76, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 75, 76, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 79, 76, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 79, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 76, 76, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 81, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 76, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 84, 84, 84, 84, 86, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 85, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84, 85, 87, 84, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 90, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 88, 88, 88, 88, 90, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 89, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 89, 91, 88, 93, 92, 94, 92, 95, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 97, 92, 97, 97, 97, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 97, 92, 92, 92, 92, 98, 99, 92, 100, 92, 101, 102, 103, 104, 105, 98, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 106, 92, 107, 103, 108, 109, 92, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 110, 111, 103, 112, 96, 92, 96, 96, 96, 96, 96, 96, 96, 96, 113, 96, 96, 96, 96, 96, 96, 96, 96, 114, 96, 96, 115, 96, 116, 96, 96, 96, 117, 118, 92, 112, 92, 96, 92, 92, 92, 92, 92, 92, 92, 92, 92, 119, 92, 119, 119, 119, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 119, 92, 92, 92, 92, 120, 121, 92, 122, 92, 123, 124, 125, 126, 127, 120, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 128, 92, 129, 125, 130, 131, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 132, 133, 125, 94, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 134, 89, 89, 89, 89, 89, 89, 89, 89, 135, 89, 89, 136, 89, 137, 89, 89, 89, 138, 139, 92, 94, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 141, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 142, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 143, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 144, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 145, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 146, 89, 89, 89, 89, 89, 89, 89, 147, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 148, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 149, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 150, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 151, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 152, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 144, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 154, 153, 155, 153, 156, 153, 125, 153, 157, 153, 153, 153, 153, 153, 153, 153, 158, 153, 159, 153, 160, 153, 125, 153, 161, 153, 125, 153, 162, 153, 156, 153, 164, 163, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167, 165, 167, 167, 167, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167, 165, 165, 165, 165, 165, 165, 165, 168, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 165, 169, 165, 165, 166, 165, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 165, 165, 165, 165, 165, 166, 171, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 173, 165, 173, 173, 173, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 173, 165, 165, 165, 165, 165, 165, 165, 174, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 165, 175, 165, 165, 172, 165, 172, 172, 172, 176, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 165, 165, 165, 165, 165, 172, 177, 178, 180, 179, 181, 179, 182, 179, 183, 179, 184, 179, 185, 186, 186, 186, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 188, 177, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, 189, 191, 189, 191, 191, 189, 189, 191, 191, 191, 192, 191, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 191, 189, 189, 190, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 191, 189, 190, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 189, 189, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 191, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 189, 191, 194, 191, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 195, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 190, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 189, 190, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 190, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 189, 190, 194, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 197, 189, 189, 189, 189, 198, 189, 189, 189, 189, 189, 199, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 189, 189, 189, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 196, 200, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 189, 196, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 201, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 201, 205, 204, 189, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 206, 197, 203, 202, 189, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 206, 198, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 197, 189, 189, 189, 189, 198, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 196, 200, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 189, 196, 189, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 206, 200, 207, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 208, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 212, 210, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 213, 210, 207, 214, 214, 214, 207, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 207, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 207, 217, 217, 217, 207, 217, 217, 217, 217, 217, 218, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 207, 217, 207, 217, 217, 217, 207, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 207, 217, 207, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 219, 208, 207, 220, 220, 220, 207, 220, 220, 220, 220, 220, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 207, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 223, 220, 220, 220, 220, 220, 220, 224, 220, 207, 220, 220, 220, 207, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 207, 220, 225, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 226, 207, 226, 207, 207, 227, 227, 227, 207, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 207, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 229, 227, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 213, 210, 207, 230, 230, 230, 207, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 207, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 230, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 177, 177, 235, 177, 236, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 232, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 177, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 237, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 232, 232, 238, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 239, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 239, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 242, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 240, 240, 240, 240, 242, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240, 241, 243, 240, 240, 244, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 246, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 246, 248, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 247, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 245, 245, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 254, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 245, 254, 255, 251, 256, 257, 256, 256, 256, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 256, 251, 251, 258, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 259, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 260, 251, 261, 262, 261, 261, 261, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 261, 251, 251, 263, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 264, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 265, 251, 267, 268, 267, 267, 267, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 267, 266, 266, 269, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 270, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 271, 266, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 276, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 278, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 273, 279, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 276, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 280, 251, 257, 251, 282, 281, 282, 282, 282, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 281, 281, 281, 281, 281, 283, 281, 281, 281, 281, 281, 281, 281, 284, 281, 285, 281, 287, 286, 286, 286, 287, 286, 286, 286, 286, 288, 289, 288, 288, 288, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 286, 286, 286, 288, 286, 286, 290, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 292, 286, 286, 293, 286, 288, 294, 288, 288, 288, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 288, 294, 295, 296, 297, 298, 299, 301, 300, 303, 304, 303, 303, 303, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 302, 289, 300, 305, 300, 307, 306, 306, 306, 307, 306, 306, 306, 306, 308, 309, 308, 308, 308, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 306, 306, 306, 306, 306, 308, 306, 306, 310, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 311, 306, 308, 312, 308, 308, 308, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 308, 312, 314, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 315, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 316, 313, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 317, 317, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 13, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 317, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 317, 320, 319, 319, 319, 320, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 320, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 321, 321, 321, 321, 321, 321, 321, 321, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 322, 319, 319, 319, 319, 319, 319, 319, 319, 319, 323, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 324, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 325, 319, 319, 326, 319, 327, 328, 330, 330, 330, 330, 330, 330, 330, 330, 329, 331, 331, 331, 331, 331, 331, 331, 331, 329, 329, 332, 332, 38, 38, 38, 332, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 332, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 333, 38, 334, 335, 336, 336, 38, 38, 38, 336, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 336, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 337, 38, 37, 336, 338, 339, 340, 340, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 341, 25, 336, 19, 19, 19, 336, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 336, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 342, 19, 332, 25, 25, 25, 332, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 332, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 332, 343, 343, 343, 332, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 332, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 345, 346, 346, 343, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 346, 19, 19, 19, 346, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 346, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 342, 19, 348, 346, 346, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 349, 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 352, 350, 349, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 349, 353, 349, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 349, 354, 349, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 349, 355, 349, 349, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 353, 349, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 354, 349, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 355, 359, 362, 361, 361, 361, 362, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 362, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 353, 361, 362, 364, 364, 364, 362, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 362, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 366, 364, 362, 367, 367, 367, 362, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 362, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 369, 367, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 372, 362, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 372, 371, 362, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 360, 371, 360, 362, 368, 368, 368, 362, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 362, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 355, 368, 360, 355, 355, 355, 360, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 360, 355, 362, 364, 364, 364, 362, 364, 364, 364, 364, 373, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 362, 364, 364, 364, 364, 364, 373, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 375, 364, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 370, 370, 370, 370, 370, 370, 370, 383, 383, 383, 383, 383, 383, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 383, 383, 383, 383, 383, 383, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 384, 384, 384, 384, 384, 384, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 372, 370, 385, 362, 367, 367, 367, 362, 367, 367, 367, 367, 377, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 362, 367, 367, 367, 367, 367, 377, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 367, 367, 367, 367, 367, 367, 367, 380, 380, 380, 380, 380, 380, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 380, 380, 380, 380, 380, 380, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 379, 367, 386, 387, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 388, 388, 388, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 388, 388, 391, 390, 390, 390, 391, 390, 390, 390, 390, 390, 392, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 390, 390, 390, 390, 390, 390, 390, 390, 393, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 394, 390, 396, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 397, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 398, 395, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 399, 399, 399, 399, 399, 399, 399, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 399, 399, 399, 399, 44, 399, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 399, 399, 399, 399, 399, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 399, 402, 401, 401, 401, 402, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 403, 403, 403, 403, 403, 403, 403, 403, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 404, 401, 401, 401, 401, 401, 401, 401, 401, 401, 405, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 406, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 407, 401, 401, 408, 401, 409, 410, 412, 412, 412, 412, 412, 412, 412, 412, 411, 413, 413, 413, 413, 413, 413, 413, 413, 411, 411, 414, 414, 69, 69, 69, 414, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 414, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 415, 69, 416, 417, 418, 418, 69, 69, 69, 418, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 418, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 419, 69, 68, 418, 420, 421, 422, 422, 56, 56, 56, 422, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 422, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 423, 56, 418, 50, 50, 50, 418, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 418, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 424, 50, 414, 56, 56, 56, 414, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 414, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 414, 425, 425, 425, 414, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 414, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 426, 425, 427, 428, 428, 425, 425, 425, 428, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 428, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 429, 425, 428, 50, 50, 50, 428, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 428, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 424, 50, 430, 428, 428, 56, 56, 56, 428, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 428, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 431, 432, 432, 432, 431, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 431, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, 433, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, 433, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 434, 432, 431, 435, 435, 435, 431, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 431, 435, 431, 436, 436, 436, 431, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 431, 436, 431, 437, 437, 437, 431, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 431, 437, 431, 431, 435, 435, 435, 431, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 431, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 435, 435, 435, 435, 435, 435, 435, 438, 438, 438, 438, 438, 438, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 438, 438, 438, 438, 438, 438, 435, 431, 436, 436, 436, 431, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 431, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 436, 436, 436, 436, 436, 436, 436, 439, 439, 439, 439, 439, 439, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 439, 439, 439, 439, 439, 439, 436, 431, 437, 437, 437, 431, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 431, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 437, 437, 437, 437, 437, 437, 437, 440, 440, 440, 440, 440, 440, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 440, 440, 440, 440, 440, 440, 437, 441, 444, 443, 443, 443, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 443, 443, 443, 443, 443, 443, 443, 445, 445, 445, 445, 445, 445, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 445, 445, 445, 445, 445, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 435, 443, 444, 446, 446, 446, 444, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 444, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 448, 446, 444, 449, 449, 449, 444, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 444, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 451, 449, 444, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, 453, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 454, 444, 453, 453, 453, 444, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 444, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 454, 453, 444, 453, 453, 453, 444, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 444, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 442, 453, 442, 444, 450, 450, 450, 444, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 444, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 437, 450, 442, 437, 437, 437, 442, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 442, 437, 444, 446, 446, 446, 444, 446, 446, 446, 446, 455, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 444, 446, 446, 446, 446, 446, 455, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 446, 446, 446, 446, 446, 446, 446, 456, 456, 456, 456, 456, 456, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 456, 456, 456, 456, 456, 456, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 457, 446, 444, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 452, 452, 452, 452, 452, 452, 452, 460, 460, 460, 460, 460, 460, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 460, 460, 460, 460, 460, 460, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 458, 458, 458, 458, 458, 458, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 452, 452, 452, 452, 452, 452, 452, 462, 462, 462, 462, 462, 462, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 462, 462, 462, 462, 462, 462, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 452, 452, 452, 452, 452, 452, 452, 463, 463, 463, 463, 463, 463, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 463, 463, 463, 463, 463, 463, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 452, 452, 452, 452, 452, 452, 452, 464, 464, 464, 464, 464, 464, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 464, 464, 464, 464, 464, 464, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 452, 452, 452, 452, 452, 452, 452, 465, 465, 465, 465, 465, 465, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 465, 465, 465, 465, 465, 465, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 459, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 461, 452, 444, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 444, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 466, 466, 466, 466, 466, 466, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 454, 452, 467, 444, 449, 449, 449, 444, 449, 449, 449, 449, 459, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 444, 449, 449, 449, 449, 449, 459, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 449, 449, 449, 449, 449, 449, 449, 462, 462, 462, 462, 462, 462, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 462, 462, 462, 462, 462, 462, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 461, 449, 468, 469, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, 471, 471, 471, 470, 470, 473, 472, 472, 472, 473, 472, 472, 472, 472, 474, 475, 474, 474, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 472, 472, 472, 472, 472, 474, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 476, 472, 474, 477, 474, 474, 474, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 474, 477, 478, 479, 479, 479, 478, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 478, 479, 481, 480, 480, 480, 481, 480, 480, 480, 480, 480, 482, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 481, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 483, 480, 484, 485, 485, 485, 484, 485, 485, 485, 485, 485, 486, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 484, 485, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 487, 487, 487, 487, 487, 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 489, 489, 489, 489, 489, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 491, 76, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 492, 492, 492, 492, 492, 492, 492, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 492, 492, 492, 492, 74, 492, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 492, 492, 492, 492, 492, 74, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 492, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 493, 493, 493, 493, 493, 493, 493, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 493, 493, 493, 493, 79, 493, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 493, 493, 493, 493, 493, 79, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 494, 494, 494, 494, 494, 494, 494, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 494, 494, 494, 494, 81, 494, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 494, 494, 494, 494, 494, 81, 496, 497, 497, 497, 496, 497, 497, 497, 497, 498, 499, 498, 498, 498, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 496, 497, 497, 497, 497, 497, 498, 500, 497, 501, 502, 503, 504, 497, 497, 497, 505, 506, 497, 506, 497, 503, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 507, 497, 508, 509, 510, 497, 497, 511, 512, 511, 511, 513, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 514, 515, 497, 503, 516, 503, 517, 518, 519, 520, 521, 522, 495, 495, 523, 495, 495, 495, 524, 525, 526, 495, 495, 527, 528, 529, 530, 495, 531, 495, 532, 495, 497, 533, 497, 506, 497, 495, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 534, 534, 534, 535, 534, 535, 534, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 534, 534, 534, 534, 495, 534, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 534, 534, 534, 534, 534, 495, 498, 536, 498, 498, 498, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 498, 536, 537, 503, 538, 538, 503, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 503, 538, 539, 540, 541, 542, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 83, 83, 543, 83, 543, 83, 83, 543, 543, 83, 83, 83, 545, 83, 83, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 83, 83, 83, 83, 83, 83, 83, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 543, 83, 543, 543, 544, 83, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 543, 543, 543, 83, 543, 544, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 547, 547, 547, 547, 547, 547, 547, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 547, 547, 547, 547, 544, 547, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 547, 547, 547, 547, 547, 544, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, 503, 538, 503, 538, 503, 538, 549, 548, 503, 550, 538, 503, 538, 551, 503, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 503, 543, 503, 538, 503, 503, 538, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 534, 534, 534, 535, 534, 535, 534, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 534, 534, 534, 534, 511, 534, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 534, 534, 534, 534, 534, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 511, 553, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 511, 511, 511, 554, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 511, 511, 511, 511, 511, 555, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 556, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 557, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 535, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 535, 552, 535, 552, 511, 511, 511, 556, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 511, 552, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 552, 552, 552, 552, 552, 511, 551, 543, 499, 543, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 559, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 560, 561, 495, 495, 495, 495, 495, 562, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 563, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 564, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 565, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 566, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 567, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 568, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 569, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 570, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 571, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 572, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 573, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 569, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 574, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 573, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 575, 495, 576, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 577, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 578, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 579, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 580, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 581, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 582, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 583, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 584, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 585, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 586, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 587, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 588, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 578, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 589, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 590, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 535, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 591, 591, 591, 535, 591, 535, 591, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 591, 591, 591, 591, 495, 591, 495, 495, 495, 495, 495, 495, 495, 495, 592, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 591, 591, 591, 591, 591, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 593, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 594, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 595, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 596, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 597, 495, 598, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 599, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 571, 495, 495, 495, 600, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 601, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 602, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 587, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 603, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 526, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 585, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 604, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 605, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 606, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 587, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 607, 495, 495, 495, 608, 495, 495, 495, 495, 495, 609, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 609, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 610, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 611, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 612, 613, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 614, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 587, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 615, 495, 495, 616, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 571, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 582, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 617, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 618, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 600, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 619, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 526, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 620, 495, 495, 495, 495, 495, 495, 495, 495, 495, 614, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 582, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 621, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 622, 495, 495, 495, 495, 495, 495, 495, 623, 495, 495, 495, 495, 495, 495, 495, 624, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 600, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 588, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 608, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 625, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 582, 495, 495, 495, 606, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 626, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 627, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 535, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 535, 558, 535, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 495, 558, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 576, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 558, 558, 558, 558, 558, 495, 503, 538, 629, 630, 630, 630, 629, 630, 630, 630, 630, 631, 630, 631, 631, 631, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 629, 630, 630, 630, 630, 630, 631, 630, 630, 632, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 630, 633, 630, 630, 628, 630, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 630, 630, 630, 630, 630, 628, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 86, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 634, 634, 634, 634, 86, 634, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 634, 634, 634, 634, 85, 634, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 634, 634, 634, 634, 634, 85, 631, 635, 631, 631, 631, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 631, 635, 636, 637, 638, 639, 640, 634, 641, 643, 644, 644, 644, 643, 644, 644, 644, 644, 645, 646, 645, 645, 645, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 643, 644, 644, 644, 644, 644, 645, 647, 644, 648, 644, 649, 650, 644, 644, 644, 651, 652, 644, 652, 644, 649, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 653, 654, 655, 644, 644, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 657, 658, 644, 649, 642, 649, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 644, 659, 644, 652, 644, 642, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 661, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 660, 660, 660, 660, 660, 662, 660, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 660, 660, 660, 660, 642, 660, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 660, 660, 660, 660, 660, 642, 664, 663, 665, 663, 645, 666, 645, 645, 645, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 645, 666, 667, 649, 668, 668, 649, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 649, 668, 669, 670, 671, 672, 649, 668, 649, 668, 649, 668, 649, 673, 668, 649, 668, 675, 649, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 649, 674, 649, 668, 649, 649, 668, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 661, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 676, 676, 676, 676, 676, 662, 676, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 676, 676, 676, 676, 656, 676, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 676, 676, 676, 676, 676, 656, 675, 674, 646, 674, 649, 668, 678, 677, 677, 677, 678, 677, 677, 677, 677, 679, 680, 679, 679, 679, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 678, 677, 677, 677, 677, 677, 679, 677, 677, 681, 677, 94, 682, 677, 683, 677, 684, 94, 125, 685, 127, 94, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 686, 677, 687, 125, 688, 689, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 125, 690, 125, 94, 677, 677, 677, 677, 677, 677, 677, 677, 677, 677, 691, 677, 677, 677, 677, 677, 677, 677, 677, 692, 677, 677, 693, 677, 694, 677, 677, 677, 138, 139, 677, 94, 677, 695, 695, 695, 695, 695, 695, 695, 695, 695, 679, 695, 679, 679, 679, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 679, 695, 695, 695, 695, 120, 121, 695, 122, 695, 123, 124, 125, 126, 127, 120, 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, 128, 695, 129, 125, 130, 131, 695, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 132, 133, 125, 94, 89, 695, 89, 89, 89, 89, 89, 89, 89, 89, 134, 89, 89, 89, 89, 89, 89, 89, 89, 135, 89, 89, 136, 89, 137, 89, 89, 89, 138, 139, 695, 94, 695, 89, 696, 697, 697, 697, 696, 697, 697, 697, 697, 125, 698, 125, 125, 125, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 696, 697, 697, 697, 697, 697, 125, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 125, 697, 125, 698, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 94, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 125, 698, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 699, 125, 698, 125, 125, 125, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 125, 700, 700, 700, 700, 700, 700, 700, 700, 700, 701, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 125, 700, 125, 698, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 125, 88, 702, 696, 125, 696, 704, 703, 706, 707, 706, 706, 706, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 706, 705, 708, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 90, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 696, 696, 696, 696, 90, 696, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 696, 696, 696, 696, 89, 696, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 696, 696, 696, 696, 696, 89, 709, 125, 698, 125, 125, 125, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 125, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 125, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 94, 696, 710, 711, 712, 713, 714, 715, 125, 698, 125, 125, 125, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 125, 696, 696, 696, 696, 696, 696, 696, 696, 696, 94, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 125, 696, 125, 703, 94, 716, 94, 716, 717, 718, 717, 717, 717, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 717, 705, 719, 716, 720, 720, 720, 720, 720, 720, 720, 720, 720, 97, 720, 97, 97, 97, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 97, 720, 720, 720, 720, 98, 99, 720, 100, 720, 101, 102, 103, 104, 105, 98, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 106, 720, 107, 103, 108, 109, 720, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 110, 111, 103, 112, 96, 720, 96, 96, 96, 96, 96, 96, 96, 96, 113, 96, 96, 96, 96, 96, 96, 96, 96, 114, 96, 96, 115, 96, 116, 96, 96, 96, 117, 118, 720, 112, 720, 96, 125, 716, 721, 716, 722, 716, 723, 716, 724, 164, 164, 164, 724, 164, 164, 164, 164, 725, 164, 725, 725, 725, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 724, 164, 164, 164, 164, 164, 725, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 726, 164, 164, 166, 164, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 164, 164, 164, 164, 166, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 727, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 163, 163, 163, 163, 727, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 163, 163, 163, 163, 166, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 163, 163, 163, 163, 163, 166, 728, 728, 728, 728, 728, 728, 728, 728, 728, 167, 728, 167, 167, 167, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 167, 728, 728, 728, 728, 728, 728, 728, 168, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 728, 169, 728, 728, 166, 728, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 728, 728, 728, 728, 728, 166, 729, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 727, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 728, 728, 728, 728, 727, 728, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 728, 728, 728, 728, 166, 728, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 730, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 728, 728, 728, 728, 728, 166, 171, 728, 732, 731, 731, 731, 732, 731, 731, 731, 731, 733, 731, 733, 733, 733, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 732, 731, 731, 731, 731, 731, 733, 731, 731, 734, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 735, 731, 731, 731, 731, 731, 731, 731, 736, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, 737, 731, 733, 738, 733, 733, 733, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 733, 738, 739, 740, 741, 742, 744, 743, 745, 746, 743, 747, 749, 750, 750, 750, 749, 750, 750, 750, 750, 751, 752, 751, 751, 751, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 749, 750, 750, 750, 750, 750, 751, 750, 750, 753, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 750, 754, 750, 750, 748, 750, 748, 748, 748, 748, 748, 748, 748, 748, 755, 748, 748, 748, 748, 748, 748, 748, 748, 756, 748, 748, 757, 748, 758, 748, 748, 748, 750, 750, 750, 750, 750, 748, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 759, 759, 759, 759, 759, 759, 759, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 759, 759, 759, 759, 748, 759, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 759, 759, 759, 759, 759, 748, 751, 760, 751, 751, 751, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 751, 760, 761, 762, 763, 764, 765, 767, 766, 768, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 770, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 771, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 772, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 773, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 774, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 770, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 775, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 776, 748, 748, 748, 748, 748, 748, 748, 777, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 778, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 779, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 770, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 780, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 770, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 781, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 782, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 769, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 748, 769, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 774, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 748, 769, 769, 769, 769, 769, 748, 784, 188, 188, 188, 784, 188, 188, 188, 188, 785, 786, 785, 785, 785, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 784, 188, 188, 188, 188, 188, 785, 787, 188, 788, 188, 789, 790, 188, 791, 188, 792, 793, 188, 794, 795, 796, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 797, 188, 798, 799, 800, 801, 188, 802, 803, 802, 802, 804, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, 805, 806, 188, 807, 808, 188, 809, 810, 811, 812, 813, 814, 783, 783, 815, 783, 783, 783, 816, 817, 818, 783, 783, 819, 820, 821, 822, 783, 823, 783, 824, 783, 825, 826, 188, 807, 188, 783, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 177, 177, 235, 177, 236, 177, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 177, 177, 177, 177, 783, 177, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 177, 177, 177, 177, 177, 783, 828, 827, 827, 829, 827, 830, 832, 833, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 834, 831, 836, 835, 837, 838, 839, 828, 827, 785, 840, 785, 785, 785, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 785, 840, 842, 841, 844, 845, 844, 844, 844, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, 844, 843, 188, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 188, 846, 847, 848, 849, 850, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 852, 852, 852, 852, 852, 852, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 852, 854, 186, 186, 186, 854, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 854, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 856, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 188, 855, 857, 859, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 188, 858, 188, 177, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 855, 855, 855, 188, 855, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 855, 855, 855, 188, 188, 855, 861, 846, 188, 846, 846, 862, 862, 862, 846, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 846, 862, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 864, 865, 846, 866, 191, 867, 865, 846, 846, 868, 869, 846, 869, 846, 191, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 870, 846, 871, 872, 873, 846, 874, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 875, 846, 846, 191, 863, 191, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 846, 876, 846, 869, 846, 863, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 878, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 877, 877, 877, 879, 877, 880, 877, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 877, 877, 877, 877, 863, 877, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 877, 877, 877, 877, 877, 863, 882, 881, 883, 885, 886, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 884, 887, 884, 889, 890, 888, 891, 892, 893, 894, 881, 191, 877, 877, 191, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 191, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 877, 877, 877, 877, 877, 877, 877, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 877, 877, 877, 877, 190, 877, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 877, 877, 877, 877, 877, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 877, 191, 877, 191, 877, 191, 877, 191, 895, 877, 191, 877, 191, 877, 191, 191, 877, 191, 877, 896, 897, 846, 898, 188, 846, 807, 188, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 188, 846, 188, 856, 846, 901, 900, 900, 900, 901, 900, 900, 900, 900, 902, 903, 902, 902, 902, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 901, 900, 900, 900, 900, 900, 902, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 900, 905, 900, 900, 904, 900, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 900, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 906, 906, 906, 906, 907, 906, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 906, 906, 906, 906, 906, 907, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 908, 908, 908, 908, 908, 908, 908, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 908, 908, 908, 908, 909, 908, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 908, 908, 908, 908, 908, 909, 912, 911, 911, 911, 912, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 912, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 913, 913, 913, 913, 913, 913, 913, 913, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 914, 911, 911, 911, 911, 911, 911, 911, 911, 911, 915, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 916, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 917, 911, 911, 918, 911, 919, 920, 922, 922, 922, 922, 922, 922, 922, 922, 921, 923, 923, 923, 923, 923, 923, 923, 923, 921, 921, 924, 924, 227, 227, 227, 924, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 924, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 925, 227, 926, 927, 928, 928, 227, 227, 227, 928, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 928, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 929, 227, 226, 928, 930, 931, 932, 932, 214, 214, 214, 932, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 932, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 933, 214, 928, 208, 208, 208, 928, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 928, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 934, 208, 924, 214, 214, 214, 924, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 924, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 924, 935, 935, 935, 924, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 924, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 936, 935, 937, 938, 938, 935, 935, 935, 938, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 938, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, 939, 935, 938, 208, 208, 208, 938, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 938, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 934, 208, 940, 938, 938, 214, 214, 214, 938, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 938, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 941, 942, 942, 942, 941, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 941, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 943, 943, 943, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 943, 943, 943, 943, 943, 943, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 944, 942, 941, 945, 945, 945, 941, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 941, 945, 941, 946, 946, 946, 941, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 941, 946, 941, 947, 947, 947, 941, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 941, 947, 941, 941, 945, 945, 945, 941, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 941, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 945, 945, 945, 945, 945, 945, 945, 948, 948, 948, 948, 948, 948, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 948, 948, 948, 948, 948, 948, 945, 941, 946, 946, 946, 941, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 941, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 946, 946, 946, 946, 946, 946, 946, 949, 949, 949, 949, 949, 949, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, 949, 949, 949, 949, 949, 949, 946, 941, 947, 947, 947, 941, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 941, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 947, 947, 947, 947, 947, 947, 947, 950, 950, 950, 950, 950, 950, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 950, 950, 950, 950, 950, 950, 947, 951, 954, 953, 953, 953, 954, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 954, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 953, 953, 953, 953, 953, 953, 953, 955, 955, 955, 955, 955, 955, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 955, 955, 955, 955, 955, 955, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 945, 953, 954, 956, 956, 956, 954, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 954, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 954, 959, 959, 959, 954, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 954, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 959, 959, 959, 959, 959, 959, 959, 960, 960, 960, 960, 960, 960, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 960, 960, 960, 960, 960, 960, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 961, 959, 954, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 964, 954, 963, 963, 963, 954, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 954, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 964, 963, 954, 963, 963, 963, 954, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 954, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 952, 963, 952, 954, 960, 960, 960, 954, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 954, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 947, 960, 952, 947, 947, 947, 952, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 952, 947, 954, 956, 956, 956, 954, 956, 956, 956, 956, 965, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 954, 956, 956, 956, 956, 956, 965, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 967, 956, 954, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 962, 962, 962, 962, 962, 962, 962, 970, 970, 970, 970, 970, 970, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 970, 970, 970, 970, 970, 970, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 968, 968, 968, 968, 968, 968, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 962, 962, 962, 962, 962, 962, 962, 972, 972, 972, 972, 972, 972, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 972, 972, 972, 972, 972, 972, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 962, 962, 962, 962, 962, 962, 962, 973, 973, 973, 973, 973, 973, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 973, 973, 973, 973, 973, 973, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 962, 962, 962, 962, 962, 962, 962, 974, 974, 974, 974, 974, 974, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 974, 974, 974, 974, 974, 974, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 962, 962, 962, 962, 962, 962, 962, 975, 975, 975, 975, 975, 975, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 975, 975, 975, 975, 975, 975, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 969, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 971, 962, 954, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 954, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 976, 976, 976, 976, 976, 976, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 964, 962, 977, 954, 959, 959, 959, 954, 959, 959, 959, 959, 969, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 954, 959, 959, 959, 959, 959, 969, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 959, 959, 959, 959, 959, 959, 959, 972, 972, 972, 972, 972, 972, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 972, 972, 972, 972, 972, 972, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 971, 959, 978, 979, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 980, 980, 980, 980, 980, 980, 980, 981, 981, 981, 981, 981, 981, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 981, 981, 981, 981, 981, 981, 980, 980, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 177, 177, 235, 177, 236, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 232, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 177, 232, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 233, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 846, 846, 235, 846, 236, 846, 232, 232, 232, 232, 982, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 846, 846, 846, 846, 232, 846, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 846, 846, 846, 846, 846, 232, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 233, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 846, 846, 235, 846, 236, 846, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 983, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 846, 846, 846, 846, 232, 846, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 846, 846, 846, 846, 846, 232, 984, 985, 846, 841, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 987, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 988, 989, 783, 783, 783, 783, 783, 990, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 991, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 992, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 993, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 994, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 995, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 996, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 997, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 998, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 999, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1000, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1001, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 997, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1002, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1001, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1003, 783, 1004, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1005, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 1006, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1007, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1008, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 1009, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1010, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1011, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 1012, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 1013, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1014, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1015, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 1016, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1006, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1017, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1018, 783, 1019, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1020, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 999, 783, 783, 783, 1017, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1021, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1022, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1015, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 1023, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 818, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1013, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 1024, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1025, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 1026, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1027, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1015, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1028, 783, 783, 783, 1029, 783, 783, 783, 783, 783, 1030, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1030, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1031, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 1032, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1033, 1034, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 1035, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1036, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1037, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1040, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1041, 1038, 1038, 1042, 1038, 1043, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1039, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1038, 1038, 1038, 1038, 1038, 1039, 832, 1044, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 834, 831, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1045, 783, 783, 1046, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 999, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1010, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1047, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1048, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1017, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1049, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 818, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 1050, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1051, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1010, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1015, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1052, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 1053, 783, 783, 783, 783, 783, 783, 783, 1054, 783, 783, 783, 783, 783, 783, 783, 1055, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1017, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1056, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1057, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1024, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1058, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1024, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 1059, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1010, 783, 783, 783, 1060, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1061, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1024, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 1062, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 1063, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 233, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 234, 986, 986, 235, 986, 236, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 783, 986, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1004, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 986, 986, 986, 986, 986, 783, 1064, 188, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 856, 846, 1066, 1065, 1065, 1065, 1066, 1065, 1065, 1065, 1065, 1067, 1068, 1067, 1067, 1067, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1065, 1065, 1065, 1065, 1065, 1067, 1065, 1065, 1069, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1070, 1065, 1067, 1071, 1067, 1067, 1067, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1067, 1071, 1072, 1073, 1074, 1075, 1076, 1078, 1077, 1079, 1081, 1082, 1082, 1082, 1081, 1082, 1082, 1082, 1082, 1083, 1084, 1083, 1083, 1083, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1081, 1082, 1082, 1082, 1082, 1082, 1083, 1082, 1082, 1085, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1082, 1086, 1082, 1082, 1080, 1082, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1082, 1082, 1082, 1082, 1082, 1080, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 242, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 1087, 1087, 1087, 1087, 242, 1087, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 1087, 1087, 1087, 1087, 241, 1087, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 1087, 1087, 1087, 1087, 1087, 241, 1083, 1088, 1083, 1083, 1083, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1083, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1087, 1095, 1097, 1098, 1098, 1098, 1097, 1098, 1098, 1098, 1098, 1099, 1100, 1099, 1099, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1097, 1098, 1098, 1098, 1098, 1098, 1099, 1101, 1102, 1103, 1104, 1105, 1106, 1102, 1107, 1108, 1109, 1105, 1110, 1111, 1112, 1105, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1122, 1122, 1124, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1125, 1126, 1127, 1105, 1128, 1102, 1129, 1130, 1131, 1132, 1133, 1134, 1096, 1096, 1135, 1096, 1096, 1096, 1136, 1137, 1138, 1096, 1096, 1139, 1140, 1141, 1142, 1096, 1143, 1096, 1144, 1096, 1145, 1146, 1147, 1105, 1098, 1096, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1148, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 251, 251, 251, 251, 251, 1149, 251, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 251, 251, 251, 251, 1096, 251, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 251, 251, 251, 251, 251, 1096, 1151, 1150, 1152, 1153, 1099, 1154, 1099, 1099, 1099, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1099, 1154, 1155, 1157, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1157, 1156, 1158, 1159, 1160, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 246, 246, 1162, 246, 1162, 246, 246, 1162, 1162, 246, 246, 246, 1163, 246, 246, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 246, 246, 246, 246, 246, 246, 246, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1162, 246, 1162, 1162, 254, 246, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1162, 1162, 1162, 246, 1162, 254, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1165, 1165, 1165, 1165, 254, 1165, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1165, 1165, 1165, 1165, 1165, 254, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 1166, 1156, 1105, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1167, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1166, 1156, 1168, 1169, 1105, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1166, 1156, 1166, 1170, 1156, 1172, 1171, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1171, 1110, 1173, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1176, 1174, 1174, 1174, 1174, 1174, 1175, 1174, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 248, 1174, 1178, 1177, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1180, 1177, 1181, 1182, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1183, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1184, 1177, 1177, 1177, 1177, 1177, 1177, 1185, 1177, 1177, 1180, 1177, 1181, 1182, 1177, 1177, 1177, 1186, 1177, 1177, 1177, 1177, 1177, 1183, 1177, 1177, 1187, 1177, 1177, 1177, 1177, 1177, 1184, 1177, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1190, 1188, 1188, 1188, 1188, 1188, 1189, 1188, 1188, 1188, 1191, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1192, 1188, 1193, 251, 1193, 251, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1194, 1196, 1198, 1197, 1199, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1185, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1186, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1187, 1177, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1201, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1186, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1187, 1177, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1204, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1207, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1208, 1210, 1209, 1211, 1213, 1213, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1214, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1215, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1216, 1212, 1217, 1217, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1218, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1217, 1217, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1207, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1221, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1222, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1223, 1219, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1226, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1227, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1228, 1224, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1231, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1229, 1229, 1232, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1233, 1229, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1235, 1202, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1207, 1202, 1234, 1234, 1234, 1234, 1234, 1234, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1237, 1236, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1239, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1240, 1236, 1236, 1236, 1236, 1236, 1239, 1236, 1236, 1236, 1241, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1242, 1236, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1244, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1241, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1242, 1236, 1245, 1202, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1247, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1248, 1202, 1202, 1202, 1202, 1202, 1247, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1207, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1205, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1206, 1202, 1167, 1173, 1105, 1249, 1156, 1157, 1156, 1250, 1157, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1157, 1173, 1157, 1156, 1157, 1105, 1156, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1162, 1162, 1162, 1162, 1162, 1162, 1251, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1162, 1162, 1162, 1162, 254, 1162, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1162, 1162, 1162, 1162, 1162, 254, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1148, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 251, 251, 251, 251, 1149, 251, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 251, 251, 251, 251, 1122, 251, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 251, 251, 251, 251, 251, 1122, 1253, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1122, 1255, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1256, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1257, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1258, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1259, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1148, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1252, 1254, 1254, 1254, 1254, 1149, 1254, 1122, 1122, 1122, 1258, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1122, 1254, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1254, 1254, 1254, 1254, 1254, 1122, 1260, 1262, 1261, 1263, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1265, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1266, 1267, 1096, 1096, 1096, 1096, 1096, 1268, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1269, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1270, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1271, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1272, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1273, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1274, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1275, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1276, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1277, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1278, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1279, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1280, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1281, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1282, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1283, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1279, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1284, 1096, 1285, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1286, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1287, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1288, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1290, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1291, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1292, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1293, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1294, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1295, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1296, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1297, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1298, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1299, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1300, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1301, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1302, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 256, 257, 256, 256, 256, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 256, 1148, 1303, 258, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1303, 1303, 259, 1303, 1303, 1149, 1303, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1303, 260, 1303, 1303, 1096, 1303, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1303, 1303, 1303, 1303, 1303, 1096, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 278, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1305, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1306, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1307, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1148, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1308, 1308, 1308, 1308, 1308, 1149, 1308, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1308, 1308, 1308, 1308, 1096, 1308, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1309, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1308, 1308, 1308, 1308, 1308, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1310, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1311, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1312, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1313, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1314, 1096, 1315, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1316, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1317, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1282, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1318, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1319, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1299, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1320, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1138, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1321, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1322, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1282, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1323, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1289, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1324, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1325, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1326, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1299, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1327, 1096, 1096, 1096, 1328, 1096, 1096, 1096, 1096, 1096, 1329, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1330, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1296, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1282, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1331, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1332, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1333, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1334, 1335, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1282, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1336, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1337, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1323, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1338, 1096, 1096, 1339, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1282, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1340, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1296, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1341, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1342, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1343, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1282, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1344, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1345, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1331, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1346, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1347, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1293, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1322, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1348, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1349, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1350, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1351, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1352, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1288, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1353, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1354, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1323, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1355, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1323, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1356, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1293, 1096, 1096, 1096, 1357, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1358, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1323, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1359, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1360, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1361, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1148, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1149, 1264, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1096, 1264, 1096, 1096, 1096, 1331, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1264, 1264, 1264, 1264, 1264, 1096, 1362, 1166, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1105, 1156, 1363, 1365, 1364, 1365, 1365, 1365, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1365, 1364, 1364, 1364, 1364, 1364, 1366, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 284, 1364, 282, 1367, 282, 282, 282, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 282, 1367, 1367, 1367, 1367, 1367, 283, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 284, 1367, 285, 1367, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1370, 1368, 1369, 1368, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1372, 1368, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1373, 1368, 1369, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1374, 1368, 1376, 1374, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 155, 2, 3, 4, 161, 6, 7, 8, 9, 10, 155, 155, 164, 167, 164, 12, 168, 14, 164, 175, 176, 179, 180, 186, 181, 182, 183, 19, 184, 185, 188, 190, 191, 192, 193, 194, 25, 18, 177, 178, 27, 228, 229, 231, 233, 231, 30, 234, 32, 231, 241, 242, 245, 246, 252, 247, 248, 249, 37, 250, 251, 254, 256, 257, 258, 259, 260, 43, 36, 243, 244, 45, 294, 295, 305, 304, 0, 48, 306, 307, 50, 308, 309, 309, 421, 52, 53, 421, 450, 54, 55, 450, 450, 454, 454, 59, 54, 60, 452, 453, 455, 456, 454, 450, 457, 458, 460, 56, 57, 461, 462, 58, 454, 61, 62, 67, 74, 464, 465, 60, 452, 453, 455, 456, 454, 450, 457, 458, 460, 56, 57, 461, 462, 58, 61, 62, 67, 74, 464, 465, 463, 63, 64, 65, 66, 68, 69, 72, 70, 71, 73, 75, 76, 450, 78, 79, 80, 82, 85, 83, 84, 86, 88, 481, 481, 481, 482, 90, 484, 91, 485, 92, 482, 90, 484, 91, 485, 519, 519, 519, 95, 96, 97, 98, 531, 519, 519, 536, 519, 519, 558, 519, 102, 559, 565, 105, 108, 110, 112, 113, 114, 108, 109, 569, 109, 569, 111, 519, 583, 584, 587, 588, 594, 589, 590, 591, 119, 592, 593, 596, 598, 599, 600, 601, 602, 125, 118, 585, 586, 127, 636, 637, 129, 521, 93, 523, 528, 131, 132, 639, 740, 134, 135, 136, 740, 748, 748, 748, 139, 770, 769, 748, 772, 774, 759, 806, 145, 146, 147, 151, 152, 145, 146, 147, 151, 152, 148, 148, 146, 147, 149, 150, 148, 148, 146, 147, 149, 150, 853, 146, 748, 922, 153, 154, 922, 922, 155, 155, 156, 157, 158, 160, 162, 163, 155, 155, 155, 159, 155, 159, 155, 1, 155, 155, 155, 5, 164, 164, 165, 164, 166, 169, 164, 164, 11, 13, 164, 164, 164, 170, 171, 172, 15, 21, 26, 195, 28, 164, 164, 164, 173, 174, 164, 16, 164, 164, 164, 17, 164, 164, 164, 20, 187, 189, 22, 164, 164, 23, 24, 164, 196, 200, 204, 197, 198, 199, 201, 202, 203, 164, 164, 205, 209, 215, 206, 213, 214, 207, 211, 212, 208, 210, 164, 216, 226, 227, 217, 218, 219, 225, 220, 221, 222, 223, 224, 164, 164, 164, 164, 230, 231, 231, 231, 232, 235, 231, 29, 31, 231, 231, 231, 236, 237, 238, 33, 39, 44, 261, 46, 231, 231, 231, 239, 240, 231, 34, 231, 231, 231, 35, 231, 231, 231, 38, 253, 255, 40, 231, 231, 41, 42, 231, 262, 266, 270, 263, 264, 265, 267, 268, 269, 231, 231, 271, 275, 281, 272, 279, 280, 273, 277, 278, 274, 276, 231, 282, 292, 293, 283, 284, 285, 291, 286, 287, 288, 289, 290, 231, 231, 231, 231, 296, 297, 297, 298, 297, 299, 297, 297, 297, 300, 300, 300, 301, 300, 300, 300, 302, 303, 302, 47, 49, 304, 304, 304, 310, 309, 309, 311, 312, 313, 314, 316, 309, 319, 320, 321, 322, 323, 325, 327, 328, 329, 333, 335, 336, 337, 353, 358, 365, 370, 377, 384, 387, 388, 392, 386, 396, 404, 408, 410, 415, 417, 420, 309, 309, 309, 309, 309, 309, 315, 309, 315, 309, 317, 51, 318, 309, 309, 309, 324, 326, 309, 330, 331, 332, 328, 334, 309, 338, 339, 348, 351, 340, 341, 342, 343, 344, 345, 346, 347, 310, 349, 350, 352, 354, 357, 355, 356, 359, 362, 360, 361, 363, 364, 366, 368, 367, 369, 371, 372, 309, 373, 374, 375, 376, 309, 378, 381, 379, 380, 382, 383, 385, 389, 390, 391, 393, 395, 394, 397, 398, 399, 401, 400, 402, 403, 405, 406, 407, 409, 411, 412, 413, 414, 416, 418, 419, 422, 421, 421, 423, 424, 426, 421, 421, 421, 425, 421, 425, 427, 421, 429, 428, 428, 433, 434, 435, 436, 428, 438, 439, 440, 441, 443, 445, 446, 447, 448, 449, 428, 430, 432, 428, 431, 428, 428, 428, 428, 428, 437, 428, 437, 442, 428, 444, 428, 450, 450, 451, 466, 467, 453, 469, 470, 457, 471, 472, 473, 474, 475, 477, 478, 479, 480, 450, 450, 450, 450, 450, 450, 454, 459, 450, 450, 450, 450, 450, 450, 450, 450, 450, 468, 450, 468, 450, 450, 450, 450, 476, 450, 77, 81, 87, 481, 483, 486, 89, 481, 481, 482, 487, 487, 488, 489, 491, 493, 494, 487, 487, 490, 487, 490, 487, 492, 487, 487, 487, 496, 495, 495, 497, 498, 499, 501, 503, 504, 509, 516, 495, 495, 495, 495, 500, 495, 500, 495, 502, 495, 495, 496, 505, 506, 507, 508, 510, 511, 514, 512, 513, 515, 517, 518, 520, 519, 529, 530, 532, 533, 535, 537, 538, 539, 541, 542, 543, 545, 546, 568, 571, 572, 573, 639, 640, 641, 642, 643, 540, 645, 661, 666, 673, 678, 680, 686, 689, 690, 694, 688, 698, 709, 713, 716, 724, 728, 731, 732, 519, 93, 522, 519, 519, 524, 526, 527, 519, 525, 519, 519, 519, 519, 519, 94, 519, 519, 519, 519, 519, 534, 519, 534, 519, 519, 99, 519, 519, 100, 519, 519, 540, 519, 544, 519, 547, 557, 519, 101, 560, 561, 562, 519, 563, 103, 566, 104, 106, 567, 519, 548, 550, 556, 519, 549, 519, 519, 551, 554, 555, 519, 552, 553, 519, 519, 519, 519, 564, 107, 570, 519, 519, 574, 519, 519, 519, 575, 577, 519, 576, 519, 576, 519, 578, 579, 580, 115, 121, 126, 603, 128, 519, 519, 519, 581, 582, 519, 116, 519, 519, 519, 117, 519, 519, 519, 120, 595, 597, 122, 519, 519, 123, 124, 519, 604, 608, 612, 605, 606, 607, 609, 610, 611, 519, 519, 613, 617, 623, 614, 621, 622, 615, 619, 620, 616, 618, 519, 624, 634, 635, 625, 626, 627, 633, 628, 629, 630, 631, 632, 519, 519, 519, 519, 638, 130, 133, 519, 644, 519, 646, 647, 656, 659, 648, 649, 650, 651, 652, 653, 654, 655, 520, 657, 658, 660, 662, 665, 663, 664, 667, 670, 668, 669, 671, 672, 674, 676, 675, 677, 679, 681, 683, 682, 684, 685, 687, 520, 691, 692, 693, 695, 697, 696, 699, 700, 701, 706, 702, 703, 704, 519, 520, 521, 93, 705, 528, 526, 707, 708, 710, 711, 712, 714, 715, 717, 718, 719, 722, 720, 721, 723, 725, 726, 727, 729, 730, 519, 733, 733, 734, 735, 736, 738, 733, 733, 733, 737, 733, 737, 733, 739, 733, 741, 740, 740, 742, 743, 744, 746, 740, 740, 740, 740, 745, 740, 745, 747, 740, 749, 748, 748, 753, 754, 755, 748, 756, 758, 761, 762, 763, 764, 765, 748, 766, 767, 771, 794, 798, 748, 799, 801, 803, 748, 804, 805, 807, 811, 813, 814, 748, 816, 834, 839, 846, 854, 861, 868, 873, 874, 878, 872, 883, 893, 899, 902, 911, 915, 919, 920, 921, 750, 752, 748, 751, 748, 748, 748, 748, 748, 748, 748, 757, 748, 757, 748, 137, 760, 748, 748, 748, 748, 748, 748, 748, 768, 748, 748, 138, 140, 748, 141, 778, 786, 789, 773, 790, 791, 779, 783, 784, 748, 773, 141, 775, 776, 142, 748, 775, 748, 748, 777, 748, 780, 782, 748, 780, 781, 783, 784, 782, 748, 748, 785, 748, 748, 787, 782, 783, 784, 787, 788, 748, 780, 782, 783, 784, 748, 780, 782, 783, 784, 748, 792, 782, 783, 784, 792, 793, 748, 141, 794, 773, 795, 783, 784, 796, 782, 141, 796, 773, 797, 800, 802, 143, 144, 748, 748, 808, 809, 810, 805, 812, 748, 748, 815, 748, 748, 817, 818, 827, 832, 819, 820, 821, 822, 823, 824, 825, 826, 749, 828, 829, 830, 831, 749, 833, 835, 838, 836, 837, 749, 749, 840, 843, 841, 842, 844, 845, 749, 847, 849, 848, 850, 851, 852, 748, 748, 855, 749, 856, 748, 857, 858, 859, 860, 752, 862, 865, 863, 864, 866, 867, 869, 870, 871, 749, 875, 876, 877, 879, 881, 882, 880, 749, 884, 885, 886, 889, 887, 888, 890, 891, 892, 894, 896, 895, 897, 898, 900, 901, 903, 904, 906, 909, 905, 907, 908, 910, 912, 913, 914, 916, 917, 918, 748, 748, 922, 923, 924, 922, 926, 925, 927, 925, 928, 929, 930, 925, 925 ] class << self attr_accessor :_lex_trans_actions private :_lex_trans_actions, :_lex_trans_actions= end self._lex_trans_actions = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 11, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 13, 14, 15, 0, 0, 16, 17, 0, 0, 18, 19, 20, 21, 22, 23, 23, 24, 25, 23, 26, 25, 27, 25, 23, 23, 24, 23, 28, 23, 23, 29, 23, 23, 23, 23, 23, 23, 0, 30, 31, 0, 32, 31, 33, 31, 0, 0, 30, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 39, 22, 40, 23, 23, 23, 40, 41, 42, 43, 0, 0, 0, 0, 0, 44, 45, 0, 46, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 50, 0, 22, 0, 51, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 52, 0, 0, 52, 53, 0, 0, 0, 54, 55, 56, 57, 0, 7, 7, 58, 59, 59, 0, 0, 0, 22, 0, 0, 0, 23, 60, 23, 23, 23, 61, 62, 63, 62, 62, 62, 0, 64, 65, 64, 64, 64, 66, 67, 68, 69, 0, 70, 71, 72, 75, 76, 0, 22, 0, 7, 0, 7, 77, 78, 79, 61, 80, 0, 81, 0, 82, 83, 84, 0, 85, 86, 0, 87, 7, 7, 88, 89, 0, 0, 90, 91, 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 96, 0, 0, 97, 0, 98, 99, 100, 0, 101, 102, 103, 0, 7, 0, 0, 104, 105, 0, 22, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 111, 112, 113, 0, 114, 115, 116, 7, 7, 117, 0, 0, 118, 119, 120, 93, 93, 93, 93, 93, 93, 93, 93, 121, 122, 123, 0, 0, 124, 0, 125, 126, 127, 0, 128, 129, 130, 0, 7, 0, 0, 131, 132, 0, 22, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 139, 140, 0, 141, 142, 0, 143, 0, 144, 145, 146, 147, 148, 149, 0, 150, 151, 152, 153, 0, 154, 0, 0, 155, 156, 157, 158, 159, 160, 0, 22, 0, 0, 7, 161, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165, 166, 167, 168, 61, 169, 0, 170, 0, 0, 0, 171, 172, 173, 0, 0, 174, 0, 0, 0, 175, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 179, 180, 0, 0, 0, 181, 182, 183, 61, 184, 0, 22, 185, 0, 186, 187, 0, 22, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 190, 0, 191, 192, 193, 194, 195, 61, 196, 0, 0, 197, 0, 198, 199, 200, 201, 22, 0, 21, 0, 0, 21, 0, 0, 0, 0, 0, 0, 7, 7, 7, 202, 203, 204, 205, 206, 207, 208, 0, 209, 210, 211, 212, 213, 214, 215, 216, 217, 61, 218, 0, 219, 220, 221, 222, 223, 224, 0, 0, 0, 225, 7, 7, 0, 226, 227, 228, 229, 230, 0, 0, 0, 0, 0, 231, 232, 61, 233, 0, 234, 22, 235, 236, 237, 238, 239, 240, 0, 22, 0, 0, 0, 0, 0, 0, 241, 242, 243, 244, 61, 245, 0, 246, 22, 247, 248, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 251, 0, 8, 0, 0, 7, 252, 0, 0, 0, 0, 0, 0, 7, 7, 0, 253, 0, 253, 253, 253, 0, 0, 253, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 0, 253, 254, 255, 0, 256, 257, 0, 52, 0, 258, 0, 259, 260, 261, 262, 263, 23, 264, 265, 266, 267, 268, 61, 269, 0, 270, 271, 0, 272, 273, 0, 274, 275, 252, 276, 0, 277, 0, 0, 278, 0, 0, 0, 0, 279, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 281, 0, 282, 283, 0, 0, 0, 284, 0, 0, 285, 286, 287, 288, 0, 0, 0, 289, 290, 0, 291, 292, 293, 0, 7, 294, 295, 296, 0, 297, 93, 93, 93, 93, 93, 93, 93, 93, 298, 299, 300, 0, 0, 301, 0, 302, 303, 304, 0, 305, 306, 307, 0, 7, 0, 0, 308, 309, 0, 22, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, 315, 316, 317, 0, 0, 0, 318, 22, 319, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 52, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 320, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 321, 322, 323, 324, 325, 325, 324, 321, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 326, 327, 328, 0, 22, 0, 0, 329, 330, 331, 61, 332, 0, 333, 22, 334, 7, 335, 336, 0, 22, 0, 0, 337, 338, 339, 340, 61, 341, 0, 22, 342, 343, 344, 345, 0, 22, 0, 346, 0, 7, 0, 0, 0, 0, 0, 347, 0, 0, 348, 348, 0, 349, 0, 0, 0, 350, 7, 351, 351, 351, 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 353, 354, 0, 355, 356, 357, 358, 359, 360, 361, 61, 362, 0, 363, 0, 0, 364, 365, 366, 367, 368, 369, 370, 0, 371, 372, 0, 0, 373, 374, 375, 0, 0, 376, 0, 0, 375, 377, 377, 378, 379, 0, 380, 380, 0, 381, 382, 383, 384, 0, 385, 375, 375, 386, 0, 0, 387, 387, 0, 388, 389, 0, 390, 391, 392, 392, 393, 393, 0, 0, 394, 395, 395, 396, 396, 397, 398, 398, 399, 399, 400, 401, 401, 402, 402, 0, 0, 403, 404, 405, 406, 407, 408, 408, 405, 407, 409, 348, 410, 0, 0, 0, 0, 0, 411, 412, 351, 351, 351, 413, 351, 414, 415, 22, 416, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 419, 420, 0, 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, 420, 422, 423, 0, 424, 0, 425, 0, 0, 0, 0, 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, 429, 430, 7, 70, 431, 0, 432, 0, 433, 0, 0, 0, 434, 435 ] class << self attr_accessor :_lex_to_state_actions private :_lex_to_state_actions, :_lex_to_state_actions= end self._lex_to_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 73, 0, 73, 0, 73, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 73, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_from_state_actions private :_lex_from_state_actions, :_lex_from_state_actions= end self._lex_from_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 74, 0, 74, 0, 74, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 74, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_eof_trans private :_lex_eof_trans, :_lex_eof_trans= end self._lex_eof_trans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 44, 44, 44, 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 83, 85, 85, 89, 89, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 164, 166, 166, 166, 178, 180, 180, 180, 180, 180, 186, 178, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 178, 190, 190, 190, 190, 241, 241, 241, 246, 248, 248, 248, 252, 252, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 282, 282, 0, 295, 296, 297, 299, 301, 303, 301, 301, 0, 313, 314, 318, 318, 319, 328, 329, 330, 330, 330, 333, 333, 335, 336, 337, 337, 337, 339, 340, 341, 341, 337, 333, 333, 346, 347, 347, 347, 347, 347, 350, 350, 350, 350, 350, 350, 350, 350, 360, 361, 361, 361, 361, 373, 373, 373, 361, 361, 361, 361, 373, 361, 373, 373, 373, 373, 373, 373, 373, 373, 386, 373, 387, 388, 389, 389, 0, 396, 400, 400, 401, 410, 411, 412, 412, 412, 415, 415, 417, 418, 419, 419, 419, 421, 422, 423, 423, 419, 415, 415, 428, 429, 429, 429, 429, 429, 432, 432, 432, 432, 432, 432, 432, 432, 442, 443, 443, 443, 443, 455, 455, 455, 443, 443, 443, 443, 455, 443, 455, 455, 455, 455, 455, 455, 455, 455, 468, 455, 469, 470, 471, 471, 0, 478, 479, 0, 485, 0, 490, 0, 493, 493, 494, 495, 0, 535, 537, 538, 539, 540, 542, 544, 548, 548, 539, 539, 539, 549, 539, 539, 544, 539, 539, 535, 553, 553, 553, 553, 553, 553, 544, 544, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 592, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 539, 0, 635, 636, 637, 639, 635, 642, 0, 661, 664, 666, 664, 667, 668, 669, 670, 672, 669, 669, 669, 669, 669, 675, 669, 669, 677, 675, 675, 669, 0, 696, 697, 89, 89, 700, 701, 89, 697, 697, 704, 706, 709, 697, 710, 697, 711, 712, 714, 716, 697, 704, 717, 717, 706, 717, 721, 717, 717, 717, 717, 0, 164, 729, 730, 729, 729, 0, 739, 740, 742, 744, 746, 744, 748, 0, 760, 761, 762, 763, 765, 767, 769, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 0, 178, 828, 831, 832, 836, 838, 839, 840, 828, 841, 842, 844, 847, 848, 850, 852, 855, 856, 858, 859, 178, 856, 856, 847, 847, 847, 847, 878, 882, 884, 885, 889, 892, 893, 894, 895, 882, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 847, 899, 847, 847, 847, 900, 907, 907, 909, 911, 920, 921, 922, 922, 922, 925, 925, 927, 928, 929, 929, 929, 931, 932, 933, 933, 929, 925, 925, 938, 939, 939, 939, 939, 939, 942, 942, 942, 942, 942, 942, 942, 942, 952, 953, 953, 953, 953, 965, 965, 965, 953, 953, 953, 953, 965, 953, 965, 965, 965, 965, 965, 965, 965, 965, 978, 965, 979, 980, 981, 981, 178, 847, 847, 985, 847, 842, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 1039, 832, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 1065, 847, 0, 1072, 1073, 1074, 1076, 1078, 1080, 0, 1088, 1089, 1090, 1091, 1093, 1088, 1096, 0, 252, 1151, 1153, 1154, 1155, 1156, 1157, 1159, 1161, 1163, 1166, 1166, 1157, 1157, 1169, 1170, 1157, 1157, 1172, 1174, 1175, 1175, 1178, 1189, 252, 1195, 1197, 1198, 1200, 1178, 1178, 1203, 1203, 1203, 1209, 1210, 1212, 1213, 1203, 1203, 1220, 1225, 1230, 1203, 1203, 1237, 1237, 1203, 1203, 1174, 1157, 1157, 1174, 1157, 1157, 1163, 252, 1254, 1255, 1255, 1255, 1255, 1255, 1255, 1261, 1163, 1264, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1304, 1305, 1265, 1265, 1309, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1363, 1157, 1364, 0, 1368, 1368, 0, 1372, 1372, 1372, 1372, 1376 ] class << self attr_accessor :lex_start end self.lex_start = 155; class << self attr_accessor :lex_error end self.lex_error = 0; class << self attr_accessor :lex_en_interp_words end self.lex_en_interp_words = 164; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 231; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 297; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 300; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 302; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 304; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 309; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 421; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 428; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 450; class << self attr_accessor :lex_en_expr_cmdarg end self.lex_en_expr_cmdarg = 481; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 487; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 495; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 519; class << self attr_accessor :lex_en_expr_labelarg end self.lex_en_expr_labelarg = 733; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 740; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 748; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 922; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 925; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 155; # line 82 "lib/parser/lexer.rl" # % ESCAPES = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" } BLANK_STRING = ''.freeze ESCAPED_NEXT_LINE = "\\\n".freeze REGEXP_META_CHARACTERS = Regexp.union(*"\\$()*+.<>?[]^{|}".chars).freeze UNDERSCORE_STRING = '_'.freeze RBRACE_OR_RPAREN = %w"} ]".freeze attr_reader :source_buffer attr_reader :encoding attr_accessor :diagnostics attr_accessor :static_env attr_accessor :force_utf32 attr_accessor :cond, :cmdarg, :in_kwarg attr_accessor :tokens, :comments def initialize(version) @version = version @static_env = nil @tokens = nil @comments = nil @has_encode = ''.respond_to?(:encode) reset end def reset(reset_state=true) # Ragel state: if reset_state # Unit tests set state prior to resetting lexer. @cs = self.class.lex_en_line_begin @cond = StackState.new('cond') @cmdarg = StackState.new('cmdarg') @cond_stack = [] @cmdarg_stack = [] end @force_utf32 = false # Set to true by some tests @source = nil # source string @source_pts = nil # @source as a codepoint array @encoding = nil # target encoding for output strings @need_encode = nil @p = 0 # stream position (saved manually in #advance) @ts = nil # token start @te = nil # token end @act = 0 # next action @stack = [] # state stack @top = 0 # state stack top pointer # Lexer state: @token_queue = [] @literal_stack = [] @eq_begin_s = nil # location of last encountered =begin @sharp_s = nil # location of last encountered # @newline_s = nil # location of last encountered newline @num_base = nil # last numeric base @num_digits_s = nil # starting position of numeric digits @num_suffix_s = nil # starting position of numeric suffix @num_xfrm = nil # numeric suffix-induced transformation @escape_s = nil # starting position of current sequence @escape = nil # last escaped sequence, as string # See below the section on parsing heredocs. @heredoc_e = nil @herebody_s = nil # Ruby 1.9 ->() lambdas emit a distinct token if do/{ is # encountered after a matching closing parenthesis. @paren_nest = 0 @lambda_stack = [] # If the lexer is in `command state' (aka expr_value) # at the entry to #advance, it will transition to expr_cmdarg # instead of expr_arg at certain points. @command_state = false # True at the end of "def foo a:" @in_kwarg = false end def source_buffer=(source_buffer) @source_buffer = source_buffer if @source_buffer @source = @source_buffer.source if defined?(Encoding) @encoding = @source.encoding # This is a workaround for 1.9.2, which (without force_encoding) # would convert the result to UTF-8 (source encoding of lexer.rl). @source += "\0".dup.force_encoding(@encoding) else @source += "\0" end if defined?(Encoding) && @source.encoding == Encoding::UTF_8 @source_pts = @source.unpack('U*') @need_encode = @has_encode && @encoding != Encoding::UTF_8 else @source_pts = @source.unpack('C*') end if (@source_pts.size > 1_000_000 && @has_encode) || @force_utf32 # A heuristic: if the buffer is larger than 1M, then # store it in UTF-32 and convert the tokens as they're # going out. If it's smaller, the conversion overhead # dominates runtime and this stops being beneficial. # # This is not really a good heuristic, as the result # heavily depends on token/character ratio. If it's low, # say the gem consists mostly of long identifiers and # symbols, then storing the source in UTF-8 would be faster. # # Patches accepted. @source = @source.encode(Encoding::UTF_32LE) @need_encode = @has_encode && @encoding != Encoding::UTF_32LE end if @source_pts[0] == 0xfeff # Skip byte order mark. @p = 1 end else @source = nil @source_pts = nil end end LEX_STATES = { :line_begin => lex_en_line_begin, :expr_dot => lex_en_expr_dot, :expr_fname => lex_en_expr_fname, :expr_value => lex_en_expr_value, :expr_beg => lex_en_expr_beg, :expr_mid => lex_en_expr_mid, :expr_arg => lex_en_expr_arg, :expr_cmdarg => lex_en_expr_cmdarg, :expr_end => lex_en_expr_end, :expr_endarg => lex_en_expr_endarg, :expr_endfn => lex_en_expr_endfn, :expr_labelarg => lex_en_expr_labelarg, :interp_string => lex_en_interp_string, :interp_words => lex_en_interp_words, :plain_string => lex_en_plain_string, :plain_words => lex_en_plain_string, } def state LEX_STATES.invert.fetch(@cs, @cs) end def state=(state) @cs = LEX_STATES.fetch(state) end def push_cmdarg @cmdarg_stack.push(@cmdarg) @cmdarg = StackState.new("cmdarg.#{@cmdarg_stack.count}") end def pop_cmdarg @cmdarg = @cmdarg_stack.pop end def push_cond @cond_stack.push(@cond) @cond = StackState.new("cond.#{@cond_stack.count}") end def pop_cond @cond = @cond_stack.pop end # Return next token: [type, value]. def advance if @token_queue.any? return @token_queue.shift end # Ugly, but dependent on Ragel output. Consider refactoring it somehow. klass = self.class _lex_trans_keys = klass.send :_lex_trans_keys _lex_key_spans = klass.send :_lex_key_spans _lex_index_offsets = klass.send :_lex_index_offsets _lex_indicies = klass.send :_lex_indicies _lex_trans_targs = klass.send :_lex_trans_targs _lex_trans_actions = klass.send :_lex_trans_actions _lex_to_state_actions = klass.send :_lex_to_state_actions _lex_from_state_actions = klass.send :_lex_from_state_actions _lex_eof_trans = klass.send :_lex_eof_trans pe = @source.length + 1 p, eof = @p, pe @command_state = (@cs == klass.lex_en_expr_value || @cs == klass.lex_en_line_begin) # line 10673 "lib/parser/lexer.rb" begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if @cs == 0 _goto_level = _out next end end if _goto_level <= _resume case _lex_from_state_actions[ @cs] when 74 then # line 1 "NONE" begin @ts = p end # line 10701 "lib/parser/lexer.rb" end _keys = @cs << 1 _inds = _lex_index_offsets[ @cs] _slen = _lex_key_spans[ @cs] _trans = if ( _slen > 0 && _lex_trans_keys[_keys] <= ( (@source_pts[p] || 0)) && ( (@source_pts[p] || 0)) <= _lex_trans_keys[_keys + 1] ) then _lex_indicies[ _inds + ( (@source_pts[p] || 0)) - _lex_trans_keys[_keys] ] else _lex_indicies[ _inds + _slen ] end end if _goto_level <= _eof_trans @cs = _lex_trans_targs[_trans] if _lex_trans_actions[_trans] != 0 case _lex_trans_actions[_trans] when 22 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 93 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 23 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end when 61 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 64 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 255 then # line 1187 "lib/parser/lexer.rl" begin tm = p end when 30 then # line 1445 "lib/parser/lexer.rl" begin tm = p end when 32 then # line 1461 "lib/parser/lexer.rl" begin tm = p end when 34 then # line 1489 "lib/parser/lexer.rl" begin tm = p end when 49 then # line 1673 "lib/parser/lexer.rl" begin @heredoc_e = p end when 295 then # line 1721 "lib/parser/lexer.rl" begin @escape = nil end when 325 then # line 1790 "lib/parser/lexer.rl" begin tm = p end when 401 then # line 2004 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 395 then # line 2005 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 398 then # line 2006 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 392 then # line 2007 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 407 then # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 375 then # line 2009 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 387 then # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 382 then # line 2067 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 380 then # line 2068 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 70 then # line 2203 "lib/parser/lexer.rl" begin tm = p end when 7 then # line 1 "NONE" begin @te = p+1 end when 90 then # line 1054 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{') if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 740 _goto_level = _again next end end end when 5 then # line 999 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 86 then # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 91 then # line 999 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 88 then # line 986 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 89 then # line 846 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 6 then # line 871 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 4 then # line 846 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 118 then # line 1054 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{') if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 740 _goto_level = _again next end end end when 10 then # line 999 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 115 then # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 119 then # line 999 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 117 then # line 846 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 11 then # line 871 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 9 then # line 846 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 142 then # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 144 then # line 986 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 145 then # line 846 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 148 then # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 150 then # line 846 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = @source[@ts...@te] string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 733; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 153 then # line 1118 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tREGEXP_OPT, tok(@ts, @te - 1), @ts, @te - 1) p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 154 then # line 1106 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unknown_options = tok.scan(/[^imxouesn]/) if unknown_options.any? diagnostic :error, :regexp_options, { :options => unknown_options.join } end emit(:tREGEXP_OPT) @cs = 748; begin p += 1 _goto_level = _out next end end end when 12 then # line 1246 "lib/parser/lexer.rl" begin @te = p+1 begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 155 then # line 1246 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 157 then # line 1259 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@@[0-9]/ diagnostic :error, :cvar_name, { :name => tok } end emit(:tCVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 156 then # line 1269 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@[0-9]/ diagnostic :error, :ivar_name, { :name => tok } end emit(:tIVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 178 then # line 1290 "lib/parser/lexer.rl" begin @te = p+1 begin emit(KEYWORDS_BEGIN[tok]); @cs = 421; begin p += 1 _goto_level = _out next end end end when 164 then # line 1298 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 421; begin p += 1 _goto_level = _out next end end end when 14 then # line 1302 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs = 748; begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 161 then # line 1311 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 421; begin p += 1 _goto_level = _out next end end end when 173 then # line 1315 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 160 then # line 1323 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 159 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 177 then # line 1290 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(KEYWORDS_BEGIN[tok]); @cs = 421; begin p += 1 _goto_level = _out next end end end when 174 then # line 1294 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 421; begin p += 1 _goto_level = _out next end end end when 176 then # line 1298 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 421; begin p += 1 _goto_level = _out next end end end when 171 then # line 1302 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs = 748; begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 167 then # line 1311 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 421; begin p += 1 _goto_level = _out next end end end when 172 then # line 1318 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 165 then # line 1320 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 170 then # line 1323 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 13 then # line 1323 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 163 then # line 1 "NONE" begin case @act when 25 then begin begin p = (( @te))-1; end emit(KEYWORDS_BEGIN[tok]); @cs = 421; begin p += 1 _goto_level = _out next end end when 26 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 421; begin p += 1 _goto_level = _out next end end when 27 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 421; begin p += 1 _goto_level = _out next end end end end when 16 then # line 1335 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 1)) @cs = 733; begin p += 1 _goto_level = _out next end end end when 180 then # line 1341 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 179 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 182 then # line 1338 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 181 then # line 1341 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 15 then # line 1341 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 188 then # line 1367 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 450; begin p += 1 _goto_level = _out next end end end when 187 then # line 1373 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 186 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 198 then # line 1352 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 189 then # line 1356 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 194 then # line 1367 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 450; begin p += 1 _goto_level = _out next end end end when 192 then # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 197 then # line 1373 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 221 then # line 1431 "lib/parser/lexer.rl" begin @te = p+1 begin # Unlike expr_beg as invoked in the next rule, do not warn p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 204 then # line 1449 "lib/parser/lexer.rl" begin @te = p+1 begin if tok(tm, tm + 1) == '/' # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 519 _goto_level = _again next end end end when 210 then # line 1473 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 18 then # line 1481 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 519 _goto_level = _again next end end end when 212 then # line 1490 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 748 _goto_level = _again next end end end when 33 then # line 1499 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 199 then # line 1513 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 200 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 211 then # line 1440 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 207 then # line 1462 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 519 _goto_level = _again next end end end when 209 then # line 1478 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 203 then # line 1499 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 202 then # line 1504 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 220 then # line 1513 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 19 then # line 1504 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 35 then # line 1513 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 17 then # line 1 "NONE" begin case @act when 52 then begin begin p = (( @te))-1; end if tok(tm, tm + 1) == '/' # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 519 _goto_level = _again next end end when 53 then begin begin p = (( @te))-1; end diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 519 _goto_level = _again next end end when 58 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 748 _goto_level = _again next end end else begin begin p = (( @te))-1; end end end end when 37 then # line 1549 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 450 _goto_level = _again next end end end when 225 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 226 then # line 1549 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 450 _goto_level = _again next end end end when 38 then # line 1549 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1 begin @cs = 450 _goto_level = _again next end end end when 36 then # line 1 "NONE" begin case @act when 65 then begin begin p = (( @te))-1; end if @cond.active? emit(:kDO_COND, 'do', @te - 2, @te) else emit(:kDO, 'do', @te - 2, @te) end @cs = 740; begin p += 1 _goto_level = _out next end end when 66 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 450 _goto_level = _again next end end end end when 236 then # line 1576 "lib/parser/lexer.rl" begin @te = p+1 begin emit_do(true) @cs = 740; begin p += 1 _goto_level = _out next end end end when 229 then # line 1582 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 230 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 231 then # line 1579 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 234 then # line 1582 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 240 then # line 1606 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 239 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 248 then # line 1598 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 519 _goto_level = _again next end end end when 242 then # line 1600 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 246 then # line 1606 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 241 then # line 1 "NONE" begin case @act when 73 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 519; begin p += 1 _goto_level = _out next end end when 74 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 519 _goto_level = _again next end end end end when 276 then # line 1623 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-' emit(:tUMINUS_NUM, '-', @ts, @ts + 1) @cs = 748; begin p += 1 _goto_level = _out next end end end end when 277 then # line 1643 "lib/parser/lexer.rl" begin @te = p+1 begin type = delimiter = tok[0].chr p = p - 1; begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 271 then # line 1650 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0].chr, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 45 then # line 1657 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 278 then # line 1697 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 48 then # line 1711 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 748; begin p += 1 _goto_level = _out next end end end when 292 then # line 1739 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[1]] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 291 then # line 1749 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 279 then # line 1785 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 42 then # line 1805 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if version?(18) ident = tok(@ts, @te - 2) emit((tok[0] =~ /[A-Z]/) ? :tCONSTANT : :tIDENTIFIER, ident, @ts, @te - 2) p = p - 1; # continue as a symbol if !@static_env.nil? && @static_env.declared?(ident) @cs = 748; else @cs = (arg_or_cmdarg); end else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) @cs = 733; end begin p += 1 _goto_level = _out next end end end when 265 then # line 1851 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 46 then # line 1864 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 748 _goto_level = _again next end end end when 251 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 275 then # line 1633 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR) begin p += 1 _goto_level = _out next end end end when 272 then # line 1657 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 270 then # line 1663 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 280 then # line 1711 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 748; begin p += 1 _goto_level = _out next end end end when 290 then # line 1749 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 296 then # line 1755 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 273 then # line 1785 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 319 then # line 1231 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end end when 262 then # line 1848 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 264 then # line 1851 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 267 then # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 748 _goto_level = _again next end end end when 44 then # line 1663 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 51 then # line 1723 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 43 then # line 1848 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 47 then # line 1864 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 748 _goto_level = _again next end end end when 41 then # line 1 "NONE" begin case @act when 95 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 96 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN, @ts, tm) p = tm - 1 @cs = 495; begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 740; begin p += 1 _goto_level = _out next end end when 99 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 748 _goto_level = _again next end end when 100 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 103 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 748 _goto_level = _again next end end end end when 327 then # line 1884 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 328 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 329 then # line 1872 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 333 then # line 1884 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 54 then # line 1894 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 336 then # line 1903 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 335 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 338 then # line 1897 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 337 then # line 1903 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 53 then # line 1903 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 519 _goto_level = _again next end end end when 369 then # line 1914 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION, @ts, @ts + 2) @lambda_stack.push @paren_nest @cs = 421; begin p += 1 _goto_level = _out next end end end when 68 then # line 1951 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 740; begin p += 1 _goto_level = _out next end end end when 346 then # line 2088 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 56 then # line 2106 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 366 then # line 2113 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 428; begin p += 1 _goto_level = _out next end end end when 360 then # line 2140 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 352 then # line 2144 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 487; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 365 then # line 2158 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 519; begin p += 1 _goto_level = _out next end end end when 350 then # line 2162 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 740; begin p += 1 _goto_level = _out next end end end when 347 then # line 2170 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 349 then # line 2183 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 740; begin p += 1 _goto_level = _out next end end end when 415 then # line 2186 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, :bare_backslash, nil, range(@ts, @ts + 1) p = p - 1; end end when 345 then # line 2192 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 344 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 425 then # line 1947 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 309; begin p += 1 _goto_level = _out next end end end when 423 then # line 1951 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 740; begin p += 1 _goto_level = _out next end end end when 422 then # line 1962 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 740; begin p += 1 _goto_level = _out next end end end when 372 then # line 2038 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, :no_dot_digit_literal end end when 412 then # line 2098 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 364 then # line 2106 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 304 _goto_level = _again next end end end when 370 then # line 2113 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 428; begin p += 1 _goto_level = _out next end end end when 417 then # line 1231 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end end when 359 then # line 2140 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 371 then # line 2170 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 357 then # line 2177 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 363 then # line 2192 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 57 then # line 2038 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :error, :no_dot_digit_literal end end when 55 then # line 2192 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 58 then # line 1 "NONE" begin case @act when 115 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' emit_do end end @cs = 740; begin p += 1 _goto_level = _out next end end when 116 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 309; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 740; begin p += 1 _goto_level = _out next end end when 118 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 519; begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 740; begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 495; begin p += 1 _goto_level = _out next end end when 121 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 519; begin p += 1 _goto_level = _out next end else @cs = 450; begin p += 1 _goto_level = _out next end end end when 122 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; else @cs = (arg_or_cmdarg); end else emit_table(KEYWORDS) end begin p += 1 _goto_level = _out next end end when 123 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 124 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i) p = p - 1; begin p += 1 _goto_level = _out next end end end when 127 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f) p = p - 1; begin p += 1 _goto_level = _out next end end end when 128 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 130 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 134 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 135 then begin begin p = (( @te))-1; end if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 450; begin p += 1 _goto_level = _out next end end end end when 72 then # line 2204 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 748 _goto_level = _again next end end end when 430 then # line 2207 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 431 then # line 2207 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 69 then # line 2207 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 434 then # line 2217 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = 155 _goto_level = _again next end end end when 433 then # line 2225 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :embedded_document, nil, range(@eq_begin_s, @eq_begin_s + '=begin'.length) end end when 83 then # line 2235 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 925 _goto_level = _again next end end end when 2 then # line 2239 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 75 then # line 2242 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 740 _goto_level = _again next end end end when 76 then # line 531 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 77 then # line 2232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 82 then # line 2235 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 925 _goto_level = _again next end end end when 81 then # line 2242 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 740 _goto_level = _again next end end end when 1 then # line 2242 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 740 _goto_level = _again next end end end when 67 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 87 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[1]] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 266 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 1851 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 435 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 2217 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = 155 _goto_level = _again next end end end when 432 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 2222 "lib/parser/lexer.rl" begin @te = p+1 end when 84 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 2235 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 925 _goto_level = _again next end end end when 3 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 2239 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 389 then # line 639 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 388 then # line 640 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, chars)) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 390 then # line 641 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 383 then # line 645 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Float(chars))) } end # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 384 then # line 649 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 385 then # line 650 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 110 then # line 665 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 137 then # line 665 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 314 then # line 665 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 94 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 121 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 298 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 97 then # line 693 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 124 then # line 693 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 301 then # line 693 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 99 then # line 714 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 126 then # line 714 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 303 then # line 714 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 96 then # line 721 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 123 then # line 721 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 300 then # line 721 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 113 then # line 725 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 140 then # line 725 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 317 then # line 725 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 107 then # line 728 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 134 then # line 728 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 311 then # line 728 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 112 then # line 733 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 139 then # line 733 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 316 then # line 733 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 106 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 133 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 310 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 109 then # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 136 then # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 313 then # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 95 then # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 122 then # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 299 then # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 146 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 871 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 151 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 871 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 60 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 24 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1445 "lib/parser/lexer.rl" begin tm = p end when 26 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1461 "lib/parser/lexer.rl" begin tm = p end when 28 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1489 "lib/parser/lexer.rl" begin tm = p end when 166 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1320 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 185 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1338 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 193 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 27 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1499 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 224 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1504 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 216 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1510 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 235 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1579 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 247 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1600 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 243 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1603 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _goto_level = _again next end end end when 263 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1848 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 334 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1872 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 330 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1875 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @in_kwarg p = p - 1; begin @cs = 748 _goto_level = _again next end else begin @cs = 155 _goto_level = _again next end end end end when 342 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1897 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 339 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1900 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 155 _goto_level = _again next end end end when 416 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 2177 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 358 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 922 _goto_level = _again next end end end when 78 then # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 2232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 215 then # line 1024 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1414 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 748 _goto_level = _again next end else emit(:tLCURLY, '{', @te - 1, @te) @cs = 740; begin p += 1 _goto_level = _out next end end end end when 237 then # line 1024 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1572 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG) @cs = 740; end end when 326 then # line 1024 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1766 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop emit(:tLAMBEG) else emit_table(PUNCTUATION_BEGIN) end begin p += 1 _goto_level = _out next end end end when 428 then # line 1024 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1922 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' emit_do end end @cs = 740; begin p += 1 _goto_level = _out next end end end when 429 then # line 1033 "lib/parser/lexer.rl" begin current_literal = literal if current_literal if current_literal.end_interp_brace_and_try_closing if version?(18, 19) emit(:tRCURLY, '}', p - 1, p) else emit(:tSTRING_DEND, '}', p - 1, p) end if current_literal.saved_herebody_s @herebody_s = current_literal.saved_herebody_s end p = p - 1; @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end end # line 2144 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 487; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 62 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 65 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 169 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1320 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 184 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1338 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 196 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 218 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1507 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 748 _goto_level = _again next end end end when 233 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1579 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 245 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1600 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 269 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1848 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 332 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1872 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 341 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1897 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 362 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2177 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 80 then # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 190 then # line 1187 "lib/parser/lexer.rl" begin tm = p end # line 1360 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = (arg_or_cmdarg); p = tm - 1; begin p += 1 _goto_level = _out next end end end when 281 then # line 1187 "lib/parser/lexer.rl" begin tm = p end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 254 then # line 1187 "lib/parser/lexer.rl" begin tm = p end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 354 then # line 1187 "lib/parser/lexer.rl" begin tm = p end # line 2120 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 450; begin p += 1 _goto_level = _out next end end end when 356 then # line 1187 "lib/parser/lexer.rl" begin tm = p end # line 1 "NONE" begin case @act when 115 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' emit_do end end @cs = 740; begin p += 1 _goto_level = _out next end end when 116 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 309; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 740; begin p += 1 _goto_level = _out next end end when 118 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 519; begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 740; begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 495; begin p += 1 _goto_level = _out next end end when 121 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 519; begin p += 1 _goto_level = _out next end else @cs = 450; begin p += 1 _goto_level = _out next end end end when 122 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; else @cs = (arg_or_cmdarg); end else emit_table(KEYWORDS) end begin p += 1 _goto_level = _out next end end when 123 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 124 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i) p = p - 1; begin p += 1 _goto_level = _out next end end end when 127 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f) p = p - 1; begin p += 1 _goto_level = _out next end end end when 128 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 130 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 134 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 135 then begin begin p = (( @te))-1; end if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 450; begin p += 1 _goto_level = _out next end end end end when 191 then # line 1188 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1360 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = (arg_or_cmdarg); p = tm - 1; begin p += 1 _goto_level = _out next end end end when 282 then # line 1188 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 256 then # line 1188 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 355 then # line 1188 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2120 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 450; begin p += 1 _goto_level = _out next end end end when 283 then # line 1193 "lib/parser/lexer.rl" begin tm = p end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 257 then # line 1193 "lib/parser/lexer.rl" begin tm = p end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 284 then # line 1194 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 258 then # line 1194 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 288 then # line 1195 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 261 then # line 1195 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 287 then # line 1196 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 260 then # line 1196 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1 "NONE" begin case @act when 95 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 96 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN, @ts, tm) p = tm - 1 @cs = 495; begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 740; begin p += 1 _goto_level = _out next end end when 99 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 748 _goto_level = _again next end end when 100 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 103 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 748 _goto_level = _again next end end end end when 285 then # line 1197 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 259 then # line 1197 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _goto_level = _again next end end end when 286 then # line 1202 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1703 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _goto_level = _out next end end end when 411 then # line 1207 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT, tok(@ts, tm), @ts, tm) p = tm - 1; begin p += 1 _goto_level = _out next end end end when 214 then # line 1213 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1408 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '[', @te - 1, @te) @cs = 519; begin p += 1 _goto_level = _out next end end end when 318 then # line 1213 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1780 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 414 then # line 1213 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 2166 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 206 then # line 1220 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1389 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if version?(18) emit(:tLPAREN2, '(', @te - 1, @te) @cs = 740; begin p += 1 _goto_level = _out next end else emit(:tLPAREN_ARG, '(', @te - 1, @te) @cs = 519; begin p += 1 _goto_level = _out next end end end end when 219 then # line 1220 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1402 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2) @cs = 519; begin p += 1 _goto_level = _out next end end end when 227 then # line 1220 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1526 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '(', @te - 1, @te) if version?(18) @cs = 740; begin p += 1 _goto_level = _out next end else @cs = 519; begin p += 1 _goto_level = _out next end end end end when 274 then # line 1220 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1780 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 367 then # line 1220 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 2140 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 519; begin p += 1 _goto_level = _out next end end end when 368 then # line 1226 "lib/parser/lexer.rl" begin @paren_nest -= 1 end # line 2144 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 487; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 50 then # line 1673 "lib/parser/lexer.rl" begin @heredoc_e = p end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 289 then # line 1674 "lib/parser/lexer.rl" begin new_herebody_s = p end # line 1675 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin tok(@ts, @heredoc_e) =~ /^<<(-?)(["'`]?)(.*)\2$/ indent = !$1.empty? type = '<<' + ($2.empty? ? '"' : $2) delimiter = $3 @cs = (push_literal(type, delimiter, @ts, @heredoc_e, indent)); if @herebody_s.nil? @herebody_s = new_herebody_s end p = @herebody_s - 1 end end when 294 then # line 1721 "lib/parser/lexer.rl" begin @escape = nil end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 322 then # line 1790 "lib/parser/lexer.rl" begin tm = p end # line 1791 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS_BEGIN, @ts, tm) p = tm - 1 @cs = 495; begin p += 1 _goto_level = _out next end end end when 402 then # line 2004 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 396 then # line 2005 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 399 then # line 2006 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 393 then # line 2007 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 408 then # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 377 then # line 2009 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 409 then # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 71 then # line 2203 "lib/parser/lexer.rl" begin tm = p end # line 2204 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 748 _goto_level = _again next end end end when 8 then # line 1 "NONE" begin @te = p+1 end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 175 then # line 1 "NONE" begin @te = p+1 end # line 1290 "lib/parser/lexer.rl" begin @act = 25; end when 162 then # line 1 "NONE" begin @te = p+1 end # line 1294 "lib/parser/lexer.rl" begin @act = 26; end when 158 then # line 1 "NONE" begin @te = p+1 end # line 1298 "lib/parser/lexer.rl" begin @act = 27; end when 20 then # line 1 "NONE" begin @te = p+1 end # line 1449 "lib/parser/lexer.rl" begin @act = 52; end when 208 then # line 1 "NONE" begin @te = p+1 end # line 1462 "lib/parser/lexer.rl" begin @act = 53; end when 21 then # line 1 "NONE" begin @te = p+1 end # line 1499 "lib/parser/lexer.rl" begin @act = 58; end when 201 then # line 1 "NONE" begin @te = p+1 end # line 1504 "lib/parser/lexer.rl" begin @act = 59; end when 228 then # line 1 "NONE" begin @te = p+1 end # line 1536 "lib/parser/lexer.rl" begin @act = 65; end when 39 then # line 1 "NONE" begin @te = p+1 end # line 1549 "lib/parser/lexer.rl" begin @act = 66; end when 249 then # line 1 "NONE" begin @te = p+1 end # line 1594 "lib/parser/lexer.rl" begin @act = 73; end when 238 then # line 1 "NONE" begin @te = p+1 end # line 1598 "lib/parser/lexer.rl" begin @act = 74; end when 252 then # line 1 "NONE" begin @te = p+1 end # line 1785 "lib/parser/lexer.rl" begin @act = 95; end when 321 then # line 1 "NONE" begin @te = p+1 end # line 1791 "lib/parser/lexer.rl" begin @act = 96; end when 320 then # line 1 "NONE" begin @te = p+1 end # line 1797 "lib/parser/lexer.rl" begin @act = 97; end when 52 then # line 1 "NONE" begin @te = p+1 end # line 1836 "lib/parser/lexer.rl" begin @act = 99; end when 250 then # line 1 "NONE" begin @te = p+1 end # line 1231 "lib/parser/lexer.rl" begin @act = 100; end when 253 then # line 1 "NONE" begin @te = p+1 end # line 1864 "lib/parser/lexer.rl" begin @act = 103; end when 424 then # line 1 "NONE" begin @te = p+1 end # line 1922 "lib/parser/lexer.rl" begin @act = 115; end when 419 then # line 1 "NONE" begin @te = p+1 end # line 1947 "lib/parser/lexer.rl" begin @act = 116; end when 427 then # line 1 "NONE" begin @te = p+1 end # line 1957 "lib/parser/lexer.rl" begin @act = 118; end when 420 then # line 1 "NONE" begin @te = p+1 end # line 1962 "lib/parser/lexer.rl" begin @act = 119; end when 421 then # line 1 "NONE" begin @te = p+1 end # line 1966 "lib/parser/lexer.rl" begin @act = 120; end when 426 then # line 1 "NONE" begin @te = p+1 end # line 1970 "lib/parser/lexer.rl" begin @act = 121; end when 418 then # line 1 "NONE" begin @te = p+1 end # line 1981 "lib/parser/lexer.rl" begin @act = 122; end when 413 then # line 1 "NONE" begin @te = p+1 end # line 1997 "lib/parser/lexer.rl" begin @act = 123; end when 348 then # line 1 "NONE" begin @te = p+1 end # line 2011 "lib/parser/lexer.rl" begin @act = 124; end when 379 then # line 1 "NONE" begin @te = p+1 end # line 2055 "lib/parser/lexer.rl" begin @act = 127; end when 59 then # line 1 "NONE" begin @te = p+1 end # line 2070 "lib/parser/lexer.rl" begin @act = 128; end when 351 then # line 1 "NONE" begin @te = p+1 end # line 2098 "lib/parser/lexer.rl" begin @act = 130; end when 343 then # line 1 "NONE" begin @te = p+1 end # line 1231 "lib/parser/lexer.rl" begin @act = 134; end when 353 then # line 1 "NONE" begin @te = p+1 end # line 2120 "lib/parser/lexer.rl" begin @act = 135; end when 152 then # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 927 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 138 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 665 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 315 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 665 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 108 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 135 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 312 then # line 748 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 762 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 92 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 120 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 297 then # line 797 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 791 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 63 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 168 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1320 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 183 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1338 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 195 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 217 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1507 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 748 _goto_level = _again next end end end when 232 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1579 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 244 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1600 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 268 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1848 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 331 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1872 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 340 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1897 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 361 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2177 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 79 then # line 1143 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 404 then # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 374 then # line 2009 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 386 then # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 381 then # line 2067 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 644 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 378 then # line 2068 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 644 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 223 then # line 1 "NONE" begin @te = p+1 end # line 505 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end # line 1504 "lib/parser/lexer.rl" begin @act = 59; end when 29 then # line 1 "NONE" begin @te = p+1 end # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1499 "lib/parser/lexer.rl" begin @act = 58; end when 40 then # line 1 "NONE" begin @te = p+1 end # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1549 "lib/parser/lexer.rl" begin @act = 66; end when 66 then # line 1 "NONE" begin @te = p+1 end # line 1146 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1951 "lib/parser/lexer.rl" begin @act = 117; end when 31 then # line 1 "NONE" begin @te = p+1 end # line 1461 "lib/parser/lexer.rl" begin tm = p end # line 1462 "lib/parser/lexer.rl" begin @act = 53; end when 324 then # line 1 "NONE" begin @te = p+1 end # line 1790 "lib/parser/lexer.rl" begin tm = p end # line 1836 "lib/parser/lexer.rl" begin @act = 99; end when 323 then # line 1 "NONE" begin @te = p+1 end # line 1790 "lib/parser/lexer.rl" begin tm = p end # line 1231 "lib/parser/lexer.rl" begin @act = 100; end when 405 then # line 1 "NONE" begin @te = p+1 end # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2011 "lib/parser/lexer.rl" begin @act = 124; end when 103 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 130 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 307 then # line 688 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 101 then # line 715 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 128 then # line 715 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 305 then # line 715 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1723 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 748; begin p += 1 _goto_level = _out next end end end when 400 then # line 2004 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 394 then # line 2005 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 397 then # line 2006 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 391 then # line 2007 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 403 then # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 373 then # line 2009 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2011 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 25 then # line 1 "NONE" begin @te = p+1 end # line 837 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1461 "lib/parser/lexer.rl" begin tm = p end # line 1462 "lib/parser/lexer.rl" begin @act = 53; end when 410 then # line 1 "NONE" begin @te = p+1 end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @act = 126; end when 406 then # line 1 "NONE" begin @te = p+1 end # line 2008 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @act = 126; end when 376 then # line 1 "NONE" begin @te = p+1 end # line 2009 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2010 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @act = 126; end # line 21372 "lib/parser/lexer.rb" end end end if _goto_level <= _again case _lex_to_state_actions[ @cs] when 73 then # line 1 "NONE" begin @ts = nil; end # line 21382 "lib/parser/lexer.rb" end if @cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof if _lex_eof_trans[ @cs] > 0 _trans = _lex_eof_trans[ @cs] - 1; _goto_level = _eof_trans next; end end end if _goto_level <= _out break end end end # line 303 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == klass.lex_error [ false, [ '$error', range(p - 1, p) ] ] else eof = @source.length [ false, [ '$eof', range(eof, eof) ] ] end end protected def eof_codepoint?(point) [0x04, 0x1a, 0x00].include? point end def version?(*versions) versions.include?(@version) end def stack_pop @top -= 1 @stack[@top] end if "".respond_to?(:encode) def encode_escape(ord) ord.chr.force_encoding(@encoding) end def tok(s = @ts, e = @te) source = @source[s...e] return source unless @need_encode source.encode(@encoding) end else def encode_escape(ord) ord.chr end def tok(s = @ts, e = @te) @source[s...e] end end def range(s = @ts, e = @te) Parser::Source::Range.new(@source_buffer, s, e) end def emit(type, value = tok, s = @ts, e = @te) token = [ type, [ value, range(s, e) ] ] @token_queue.push(token) @tokens.push(token) if @tokens token end def emit_table(table, s = @ts, e = @te) value = tok(s, e) emit(table[value], value, s, e) end def emit_do(do_block=false) if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? || do_block emit(:kDO_BLOCK) else emit(:kDO) end end def arg_or_cmdarg if @command_state self.class.lex_en_expr_cmdarg else self.class.lex_en_expr_arg end end def emit_comment(s = @ts, e = @te) if @comments @comments.push(Parser::Source::Comment.new(range(s, e))) end if @tokens @tokens.push([ :tCOMMENT, [ tok(s, e), range(s, e) ] ]) end nil end def diagnostic(type, reason, arguments=nil, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, reason, arguments, location, highlights)) end # # === LITERAL STACK === # def push_literal(*args) new_literal = Literal.new(self, *args) @literal_stack.push(new_literal) if new_literal.words? if new_literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end else if new_literal.interpolate? self.class.lex_en_interp_string else self.class.lex_en_plain_string end end end def literal @literal_stack.last end def pop_literal old_literal = @literal_stack.pop if old_literal.type == :tREGEXP_BEG # Fetch modifiers. self.class.lex_en_regexp_modifiers else self.class.lex_en_expr_end end end # Mapping of strings to parser tokens. PUNCTUATION = { '=' => :tEQL, '&' => :tAMPER2, '|' => :tPIPE, '!' => :tBANG, '^' => :tCARET, '+' => :tPLUS, '-' => :tMINUS, '*' => :tSTAR2, '/' => :tDIVIDE, '%' => :tPERCENT, '~' => :tTILDE, ',' => :tCOMMA, ';' => :tSEMI, '.' => :tDOT, '..' => :tDOT2, '...' => :tDOT3, '[' => :tLBRACK2, ']' => :tRBRACK, '(' => :tLPAREN2, ')' => :tRPAREN, '?' => :tEH, ':' => :tCOLON, '&&' => :tANDOP, '||' => :tOROP, '-@' => :tUMINUS, '+@' => :tUPLUS, '~@' => :tTILDE, '**' => :tPOW, '->' => :tLAMBDA, '=~' => :tMATCH, '!~' => :tNMATCH, '==' => :tEQ, '!=' => :tNEQ, '>' => :tGT, '>>' => :tRSHFT, '>=' => :tGEQ, '<' => :tLT, '<<' => :tLSHFT, '<=' => :tLEQ, '=>' => :tASSOC, '::' => :tCOLON2, '===' => :tEQQ, '<=>' => :tCMP, '[]' => :tAREF, '[]=' => :tASET, '{' => :tLCURLY, '}' => :tRCURLY, '`' => :tBACK_REF2, '!@' => :tBANG, '&.' => :tANDDOT, } PUNCTUATION_BEGIN = { '&' => :tAMPER, '*' => :tSTAR, '**' => :tDSTAR, '+' => :tUPLUS, '-' => :tUMINUS, '::' => :tCOLON3, '(' => :tLPAREN, '{' => :tLBRACE, '[' => :tLBRACK, } KEYWORDS = { 'if' => :kIF_MOD, 'unless' => :kUNLESS_MOD, 'while' => :kWHILE_MOD, 'until' => :kUNTIL_MOD, 'rescue' => :kRESCUE_MOD, 'defined?' => :kDEFINED, 'BEGIN' => :klBEGIN, 'END' => :klEND, } KEYWORDS_BEGIN = { 'if' => :kIF, 'unless' => :kUNLESS, 'while' => :kWHILE, 'until' => :kUNTIL, 'rescue' => :kRESCUE, 'defined?' => :kDEFINED, } %w(class module def undef begin end then elsif else ensure case when for break next redo retry in do return yield super self nil true false and or not alias __FILE__ __LINE__ __ENCODING__).each do |keyword| KEYWORDS_BEGIN[keyword] = KEYWORDS[keyword] = :"k#{keyword.upcase}" end # line 2247 "lib/parser/lexer.rl" # % end