# -*- encoding:utf-8; warn-indent:false -*- # 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, 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, 120, 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, 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, 0, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 10, 10, 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, 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, 127, 0, 127, 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, 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, 95, 46, 120, 48, 101, 43, 57, 48, 57, 48, 95, 48, 95, 48, 57, 48, 95, 48, 95, 48, 95, 48, 95, 48, 95, 48, 95, 48, 95, 48, 95, 48, 102, 48, 102, 48, 102, 46, 101, 48, 57, 46, 101, 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, 0, 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, 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, 121, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 10, 10, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 47, 96, 24, 0, 1, 1, 1, 24, 1, 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, 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, 128, 128, 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, 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, 48, 75, 54, 15, 10, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 55, 55, 55, 56, 10, 56, 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, 47, 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, 147, 276, 405, 534, 581, 660, 739, 833, 861, 889, 936, 1037, 1065, 1099, 1101, 1195, 1274, 1378, 1507, 1636, 1765, 1894, 1941, 2020, 2099, 2193, 2221, 2249, 2296, 2397, 2425, 2459, 2461, 2555, 2634, 2738, 2867, 2996, 3125, 3254, 3383, 3512, 3514, 3643, 3645, 3647, 3649, 3651, 3780, 3909, 4038, 4167, 4296, 4425, 4554, 4683, 4812, 4941, 5070, 5199, 5328, 5457, 5586, 5715, 5844, 5973, 5975, 5977, 5979, 5981, 5991, 5993, 5995, 5997, 5999, 6001, 6003, 6005, 6007, 6136, 6138, 6267, 6269, 6271, 6273, 6275, 6277, 6279, 6403, 6405, 6534, 6663, 6730, 6859, 6988, 6990, 7119, 7248, 7250, 7276, 7278, 7309, 7438, 7526, 7648, 7695, 7774, 7853, 7947, 7975, 8003, 8050, 8151, 8179, 8213, 8215, 8309, 8388, 8492, 8621, 8750, 8879, 9008, 9137, 9266, 9268, 9270, 9399, 9410, 9421, 9550, 9552, 9637, 9722, 9807, 9892, 9977, 10062, 10064, 10066, 10105, 10153, 10250, 10275, 10276, 10278, 10280, 10282, 10307, 10309, 10311, 10313, 10407, 10432, 10521, 10650, 10661, 10783, 10784, 10785, 10794, 10803, 10804, 10805, 10899, 10900, 10901, 10902, 10996, 10998, 10999, 11000, 11001, 11095, 11142, 11236, 11330, 11331, 11332, 11426, 11473, 11475, 11569, 11694, 11722, 11750, 11778, 11779, 11883, 11987, 12091, 12092, 12219, 12346, 12473, 12600, 12727, 12728, 12855, 12982, 12983, 13110, 13138, 13265, 13392, 13519, 13646, 13773, 13900, 14027, 14154, 14281, 14408, 14409, 14536, 14537, 14538, 14594, 14595, 14689, 14778, 14907, 14918, 15040, 15041, 15042, 15051, 15060, 15061, 15062, 15156, 15157, 15158, 15159, 15253, 15255, 15256, 15257, 15258, 15352, 15399, 15493, 15587, 15588, 15589, 15683, 15730, 15732, 15826, 15951, 15979, 16007, 16035, 16036, 16140, 16244, 16348, 16349, 16476, 16603, 16730, 16857, 16984, 16985, 17112, 17239, 17240, 17367, 17395, 17522, 17649, 17776, 17903, 18030, 18157, 18284, 18411, 18538, 18665, 18666, 18793, 18794, 18795, 18851, 18852, 18946, 18971, 18999, 19093, 19121, 19180, 19239, 19269, 19398, 19409, 19538, 19667, 19796, 19925, 19950, 19951, 20018, 20020, 20022, 20151, 20280, 20291, 20293, 20295, 20297, 20299, 20302, 20304, 20371, 20373, 20376, 20505, 20634, 20763, 20892, 21021, 21150, 21279, 21281, 21283, 21412, 21541, 21670, 21799, 21928, 22057, 22186, 22315, 22444, 22573, 22702, 22831, 22960, 23089, 23218, 23347, 23476, 23605, 23734, 23863, 23992, 24121, 24250, 24379, 24508, 24637, 24766, 24895, 25024, 25153, 25282, 25411, 25540, 25669, 25798, 25927, 26056, 26185, 26314, 26443, 26572, 26701, 26830, 26959, 27088, 27217, 27346, 27475, 27604, 27733, 27862, 27991, 28120, 28249, 28378, 28507, 28636, 28765, 28894, 29023, 29152, 29281, 29410, 29539, 29668, 29797, 29926, 30055, 30184, 30313, 30442, 30571, 30700, 30829, 30958, 31087, 31216, 31345, 31474, 31603, 31732, 31861, 31990, 31992, 32121, 32250, 32275, 32277, 32279, 32281, 32282, 32411, 32540, 32542, 32543, 32544, 32569, 32570, 32637, 32639, 32641, 32643, 32645, 32647, 32650, 32652, 32719, 32721, 32724, 32853, 32855, 32857, 32859, 32987, 33116, 33179, 33233, 33287, 33288, 33342, 33397, 33399, 33401, 33403, 33428, 33429, 33558, 33559, 33676, 33677, 33679, 33681, 33682, 33736, 33738, 33740, 33742, 33744, 33873, 33875, 33877, 33879, 33881, 34010, 34139, 34268, 34269, 34398, 34400, 34525, 34550, 34552, 34554, 34556, 34557, 34559, 34560, 34689, 34818, 34843, 34844, 34846, 34848, 34850, 34851, 34980, 35109, 35238, 35367, 35496, 35625, 35754, 35883, 36012, 36141, 36270, 36399, 36528, 36657, 36786, 36915, 37044, 37173, 37178, 37179, 37246, 37248, 37249, 37250, 37251, 37253, 37278, 37280, 37305, 37372, 37374, 37376, 37435, 37559, 37584, 37585, 37606, 37608, 37623, 37639, 37641, 37643, 37671, 37800, 37929, 37931, 37932, 37999, 38002, 38003, 38004, 38005, 38006, 38007, 38074, 38203, 38214, 38216, 38218, 38220, 38223, 38225, 38227, 38230, 38232, 38235, 38236, 38238, 38305, 38308, 38432, 38561, 38690, 38691, 38692, 38701, 38710, 38711, 38712, 38806, 38807, 38808, 38809, 38903, 38905, 38906, 38907, 38908, 39002, 39049, 39143, 39237, 39238, 39239, 39333, 39380, 39382, 39476, 39601, 39629, 39657, 39685, 39686, 39790, 39894, 39998, 39999, 40126, 40253, 40380, 40507, 40634, 40635, 40762, 40889, 40890, 41017, 41045, 41172, 41299, 41426, 41553, 41680, 41807, 41934, 42061, 42188, 42315, 42316, 42443, 42444, 42445, 42501, 42502, 42631, 42760, 42889, 42890, 42892, 42893, 43022, 43151, 43280, 43409, 43538, 43667, 43796, 43925, 44054, 44183, 44312, 44441, 44570, 44699, 44828, 44957, 45086, 45215, 45344, 45473, 45602, 45731, 45860, 45989, 46118, 46247, 46376, 46505, 46634, 46763, 46892, 47021, 47150, 47279, 47408, 47537, 47666, 47795, 47924, 48053, 48182, 48311, 48440, 48569, 48698, 48827, 48956, 49085, 49214, 49343, 49472, 49601, 49730, 49859, 49988, 50117, 50246, 50375, 50504, 50633, 50700, 50829, 50958, 51087, 51216, 51345, 51474, 51603, 51732, 51861, 51990, 52119, 52248, 52377, 52506, 52635, 52764, 52893, 53022, 53151, 53280, 53409, 53538, 53667, 53796, 53925, 53926, 53991, 54120, 54249, 54274, 54275, 54277, 54279, 54281, 54282, 54411, 54540, 54542, 54543, 54544, 54569, 54570, 54637, 54639, 54641, 54770, 54899, 54910, 54912, 54937, 54938, 54939, 54960, 54963, 54976, 54978, 55027, 55103, 55158, 55174, 55185, 55234, 55283, 55294, 55343, 55392, 55441, 55490, 55539, 55588, 55637, 55686, 55742, 55798, 55854, 55911, 55922, 55979, 55981, 55984, 55986, 56053, 56055, 56058, 56187, 56316, 56317, 56446, 56575, 56704, 56833, 56962, 57091, 57092, 57094, 57095, 57224, 57353, 57482, 57611, 57740, 57869, 57998, 58127, 58256, 58385, 58514, 58643, 58772, 58901, 59030, 59159, 59288, 59417, 59546, 59675, 59804, 59933, 60062, 60191, 60320, 60449, 60578, 60707, 60836, 60965, 61094, 61223, 61352, 61481, 61610, 61739, 61868, 61953, 62082, 62211, 62340, 62469, 62598, 62727, 62856, 62985, 63114, 63243, 63372, 63501, 63630, 63759, 63888, 64017, 64146, 64275, 64404, 64533, 64662, 64791, 64920, 65049, 65178, 65307, 65436, 65565, 65694, 65823, 65952, 66081, 66210, 66339, 66468, 66597, 66726, 66855, 66984, 67113, 67242, 67371, 67500, 67629, 67758, 67887, 68016, 68145, 68274, 68403, 68532, 68661, 68790, 68919, 69048, 69177, 69306, 69435, 69564, 69693, 69822, 69951, 70080, 70209, 70338, 70339, 70404, 70405, 70444, 70483, 70531, 70584, 70586, 70679, 70781, 70873 ] 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, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 10, 12, 10, 12, 12, 10, 10, 12, 12, 12, 13, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 12, 10, 10, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 12, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 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, 10, 10, 10, 10, 12, 10, 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, 10, 10, 10, 10, 10, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 11, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 11, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 11, 16, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 17, 16, 19, 19, 19, 16, 19, 19, 19, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 19, 16, 19, 19, 19, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, 19, 16, 23, 23, 23, 16, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 16, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 23, 16, 26, 26, 26, 16, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 16, 26, 16, 26, 26, 26, 16, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 16, 26, 16, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 28, 17, 16, 29, 29, 29, 16, 29, 29, 29, 29, 29, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 16, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 31, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 32, 29, 29, 29, 29, 29, 29, 33, 29, 16, 29, 29, 29, 16, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 16, 29, 34, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 35, 16, 35, 16, 16, 36, 36, 36, 16, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 16, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 38, 36, 16, 19, 19, 19, 16, 19, 19, 19, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, 19, 16, 39, 39, 39, 16, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 16, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 39, 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, 41, 41, 41, 41, 41, 41, 41, 43, 43, 41, 43, 41, 43, 43, 41, 41, 43, 43, 43, 44, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 43, 41, 41, 42, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 43, 41, 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, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 41, 41, 41, 41, 41, 41, 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, 41, 41, 41, 41, 43, 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, 41, 41, 41, 41, 41, 43, 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, 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, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 46, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 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, 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, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 42, 47, 48, 48, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 47, 50, 50, 50, 47, 50, 50, 50, 50, 50, 51, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 47, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 52, 50, 47, 50, 50, 50, 47, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 47, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 53, 50, 47, 54, 54, 54, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 47, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 56, 54, 47, 57, 57, 57, 47, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 47, 57, 47, 57, 57, 57, 47, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 47, 57, 47, 48, 48, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 59, 48, 47, 60, 60, 60, 47, 60, 60, 60, 60, 60, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 47, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 62, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 63, 60, 60, 60, 60, 60, 60, 64, 60, 47, 60, 60, 60, 47, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 47, 60, 65, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 66, 47, 66, 47, 47, 67, 67, 67, 47, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 47, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 47, 50, 50, 50, 47, 50, 50, 50, 50, 50, 51, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 47, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 53, 50, 47, 70, 70, 70, 47, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 47, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 70, 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, 74, 74, 74, 74, 74, 74, 74, 73, 73, 74, 73, 74, 73, 73, 74, 74, 73, 73, 73, 75, 73, 73, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 73, 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, 74, 73, 74, 74, 72, 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, 74, 74, 74, 73, 74, 72, 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, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 73, 74, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 73, 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, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 74, 74, 74, 74, 74, 74, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 74, 74, 74, 74, 77, 74, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 74, 74, 74, 74, 74, 77, 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, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 74, 74, 74, 74, 74, 74, 74, 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, 74, 74, 74, 74, 79, 74, 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, 74, 74, 74, 74, 74, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 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, 80, 80, 80, 80, 81, 80, 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, 80, 80, 80, 80, 80, 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, 84, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 85, 82, 82, 82, 82, 84, 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, 85, 82, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 88, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 86, 86, 86, 86, 88, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 87, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 87, 89, 86, 91, 90, 92, 90, 93, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 95, 90, 95, 95, 95, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 95, 90, 90, 90, 90, 96, 97, 90, 98, 90, 99, 100, 101, 102, 103, 104, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 105, 90, 106, 101, 107, 108, 90, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 109, 110, 101, 111, 94, 90, 94, 94, 94, 94, 94, 94, 94, 94, 112, 94, 94, 94, 94, 94, 94, 94, 94, 113, 94, 94, 114, 94, 115, 94, 94, 94, 116, 117, 90, 111, 90, 94, 90, 90, 90, 90, 90, 90, 90, 90, 90, 118, 90, 118, 118, 118, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 118, 90, 90, 90, 90, 119, 120, 90, 121, 90, 122, 123, 124, 125, 126, 127, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 128, 90, 129, 124, 130, 131, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 132, 133, 124, 92, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 134, 87, 87, 87, 87, 87, 87, 87, 87, 135, 87, 87, 136, 87, 137, 87, 87, 87, 138, 139, 90, 92, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 140, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 141, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 142, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 143, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 144, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 140, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 145, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 146, 87, 87, 87, 87, 87, 87, 87, 147, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 148, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 149, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 140, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 150, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 140, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 151, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 152, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 90, 90, 90, 90, 88, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 87, 90, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 144, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 90, 90, 90, 90, 90, 87, 154, 153, 155, 153, 156, 153, 124, 153, 157, 153, 153, 153, 153, 153, 153, 153, 158, 153, 159, 153, 160, 153, 124, 153, 161, 153, 124, 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, 209, 208, 208, 208, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 210, 210, 210, 210, 210, 210, 210, 210, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 211, 208, 208, 208, 208, 208, 208, 208, 208, 208, 212, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 213, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 214, 208, 208, 215, 208, 207, 216, 216, 216, 207, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 207, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 216, 218, 219, 219, 219, 218, 219, 219, 219, 219, 219, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 221, 219, 218, 219, 219, 219, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 222, 219, 218, 223, 223, 223, 218, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 218, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 218, 226, 226, 226, 218, 226, 226, 226, 226, 226, 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 218, 226, 218, 226, 226, 226, 218, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 218, 226, 207, 216, 216, 216, 207, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 207, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 228, 216, 218, 229, 229, 229, 218, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 218, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 231, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 229, 229, 229, 229, 229, 229, 233, 229, 218, 229, 229, 229, 218, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 218, 229, 234, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 235, 218, 235, 218, 207, 236, 236, 236, 207, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 207, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 236, 207, 219, 219, 219, 207, 219, 219, 219, 219, 219, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 207, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 222, 219, 207, 239, 239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 239, 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, 242, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 177, 177, 244, 177, 245, 177, 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, 177, 177, 177, 177, 241, 177, 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, 177, 177, 177, 177, 177, 241, 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, 242, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 189, 189, 244, 189, 245, 189, 241, 241, 241, 241, 241, 241, 246, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 189, 189, 189, 189, 241, 189, 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, 189, 189, 189, 189, 189, 241, 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, 242, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 189, 189, 244, 189, 245, 189, 241, 241, 241, 241, 241, 241, 241, 241, 247, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 189, 189, 189, 189, 241, 189, 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, 189, 189, 189, 189, 189, 241, 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, 242, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 189, 189, 244, 189, 245, 189, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 248, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 189, 189, 189, 189, 241, 189, 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, 189, 189, 189, 189, 189, 241, 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, 242, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 189, 189, 244, 189, 245, 189, 241, 241, 241, 248, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 189, 189, 189, 189, 241, 189, 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, 189, 189, 189, 189, 189, 241, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 251, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 252, 249, 249, 249, 249, 251, 249, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 249, 249, 249, 249, 250, 249, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 249, 249, 249, 249, 249, 250, 252, 249, 249, 253, 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, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 258, 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, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 254, 254, 254, 254, 254, 254, 254, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 254, 254, 254, 254, 260, 254, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 254, 254, 254, 254, 254, 260, 261, 258, 262, 263, 262, 262, 262, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 262, 258, 258, 264, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 265, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 266, 258, 267, 268, 267, 267, 267, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 267, 258, 258, 269, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 270, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 271, 258, 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, 279, 280, 279, 279, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 281, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 282, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 283, 278, 279, 280, 279, 279, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 281, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 284, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 283, 278, 279, 285, 279, 279, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 281, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 282, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 283, 278, 286, 258, 263, 258, 288, 287, 288, 288, 288, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 289, 287, 287, 290, 290, 290, 287, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 287, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 287, 290, 292, 291, 291, 291, 292, 291, 291, 291, 291, 293, 294, 293, 293, 293, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 291, 291, 291, 291, 291, 293, 291, 291, 295, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 296, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 297, 291, 291, 298, 291, 293, 299, 293, 293, 293, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 293, 299, 300, 301, 302, 303, 304, 306, 305, 308, 309, 308, 308, 308, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 308, 307, 294, 305, 310, 305, 312, 311, 314, 313, 313, 313, 314, 313, 313, 313, 313, 315, 316, 315, 315, 315, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 313, 313, 313, 315, 313, 313, 317, 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, 318, 313, 315, 319, 315, 315, 315, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 315, 319, 321, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 322, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 323, 320, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 324, 324, 324, 324, 324, 324, 324, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 324, 324, 324, 324, 11, 324, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 324, 324, 324, 324, 324, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 324, 327, 326, 326, 326, 327, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 328, 328, 328, 328, 328, 328, 328, 328, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 329, 326, 326, 326, 326, 326, 326, 326, 326, 326, 330, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 331, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 332, 326, 326, 333, 326, 334, 335, 337, 337, 337, 337, 337, 337, 337, 337, 336, 338, 338, 338, 338, 338, 338, 338, 338, 336, 336, 339, 339, 36, 36, 36, 339, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 339, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 340, 36, 341, 342, 343, 343, 36, 36, 36, 343, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 343, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 344, 36, 35, 343, 345, 346, 347, 347, 23, 23, 23, 347, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 347, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 348, 23, 343, 17, 17, 17, 343, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 343, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 349, 17, 339, 23, 23, 23, 339, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 339, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 23, 339, 350, 350, 350, 339, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 339, 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, 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, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 351, 350, 352, 353, 353, 350, 350, 350, 353, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 353, 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, 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, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 354, 350, 353, 17, 17, 17, 353, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 353, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 349, 17, 355, 353, 353, 23, 23, 23, 353, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 353, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 23, 356, 357, 357, 357, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 359, 357, 356, 360, 360, 360, 356, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 356, 360, 356, 361, 361, 361, 356, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 356, 361, 356, 362, 362, 362, 356, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 356, 362, 356, 356, 360, 360, 360, 356, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 356, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 360, 360, 360, 360, 360, 360, 360, 363, 363, 363, 363, 363, 363, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 363, 363, 363, 363, 363, 363, 360, 356, 361, 361, 361, 356, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 356, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 361, 361, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 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, 364, 364, 364, 364, 364, 364, 361, 356, 362, 362, 362, 356, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 356, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 362, 366, 369, 368, 368, 368, 369, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 369, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 368, 368, 368, 368, 368, 368, 368, 370, 370, 370, 370, 370, 370, 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, 370, 370, 370, 370, 370, 370, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 360, 368, 369, 371, 371, 371, 369, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 369, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 371, 371, 371, 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, 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, 372, 372, 372, 372, 372, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 373, 371, 369, 374, 374, 374, 369, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 369, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 375, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 375, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 376, 374, 369, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 379, 369, 378, 378, 378, 369, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 369, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 378, 369, 378, 378, 378, 369, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 369, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 367, 378, 367, 369, 375, 375, 375, 369, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 369, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 362, 375, 367, 362, 362, 362, 367, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 367, 362, 369, 371, 371, 371, 369, 371, 371, 371, 371, 380, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 369, 371, 371, 371, 371, 371, 380, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 371, 371, 371, 371, 371, 371, 371, 381, 381, 381, 381, 381, 381, 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, 381, 381, 381, 381, 381, 381, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 382, 371, 369, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 377, 377, 377, 377, 377, 377, 377, 385, 385, 385, 385, 385, 385, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 385, 385, 385, 385, 385, 385, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 383, 383, 383, 383, 383, 383, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 377, 377, 377, 377, 377, 377, 377, 387, 387, 387, 387, 387, 387, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 387, 387, 387, 387, 387, 387, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 377, 377, 377, 377, 377, 377, 377, 388, 388, 388, 388, 388, 388, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 388, 388, 388, 388, 388, 388, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 377, 377, 377, 377, 377, 377, 377, 389, 389, 389, 389, 389, 389, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 389, 389, 389, 389, 389, 389, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 377, 377, 377, 377, 377, 377, 377, 390, 390, 390, 390, 390, 390, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 390, 390, 390, 390, 390, 390, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 384, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 386, 377, 369, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 369, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 391, 391, 391, 391, 391, 391, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 379, 377, 392, 369, 374, 374, 374, 369, 374, 374, 374, 374, 384, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 369, 374, 374, 374, 374, 374, 384, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 374, 374, 374, 374, 374, 374, 374, 387, 387, 387, 387, 387, 387, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 387, 387, 387, 387, 387, 387, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 386, 374, 393, 394, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 395, 395, 395, 395, 395, 395, 395, 396, 396, 396, 396, 396, 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, 396, 396, 396, 396, 396, 396, 395, 395, 398, 397, 397, 397, 398, 397, 397, 397, 397, 397, 399, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 398, 397, 397, 397, 397, 397, 397, 397, 397, 400, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 401, 397, 403, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 404, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 405, 402, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 406, 406, 406, 406, 406, 406, 406, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 406, 406, 406, 406, 42, 406, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 406, 406, 406, 406, 406, 42, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 406, 409, 408, 408, 408, 409, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 409, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 410, 410, 410, 410, 410, 410, 410, 410, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 411, 408, 408, 408, 408, 408, 408, 408, 408, 408, 412, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 413, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 414, 408, 408, 415, 408, 416, 417, 419, 419, 419, 419, 419, 419, 419, 419, 418, 420, 420, 420, 420, 420, 420, 420, 420, 418, 418, 421, 421, 67, 67, 67, 421, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 421, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 422, 67, 423, 424, 425, 425, 67, 67, 67, 425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 426, 67, 66, 425, 427, 428, 429, 429, 54, 54, 54, 429, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 429, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 430, 54, 425, 48, 48, 48, 425, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 425, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 431, 48, 421, 54, 54, 54, 421, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 421, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 56, 54, 421, 432, 432, 432, 421, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 421, 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, 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, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 433, 432, 434, 435, 435, 432, 432, 432, 435, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 435, 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, 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, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 436, 432, 435, 48, 48, 48, 435, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 435, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 431, 48, 437, 435, 435, 54, 54, 54, 435, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 435, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 56, 54, 438, 439, 439, 439, 438, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 438, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 440, 440, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, 441, 439, 438, 442, 442, 442, 438, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 438, 442, 438, 443, 443, 443, 438, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 438, 443, 438, 444, 444, 444, 438, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 438, 444, 438, 438, 442, 442, 442, 438, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 438, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 438, 443, 443, 443, 438, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 438, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 443, 443, 443, 443, 443, 443, 443, 446, 446, 446, 446, 446, 446, 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, 446, 446, 446, 446, 446, 446, 443, 438, 444, 444, 444, 438, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 438, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 444, 444, 444, 444, 444, 444, 444, 447, 447, 447, 447, 447, 447, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 447, 447, 447, 447, 447, 447, 444, 448, 451, 450, 450, 450, 451, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 450, 450, 450, 450, 450, 450, 450, 452, 452, 452, 452, 452, 452, 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, 452, 452, 452, 452, 452, 452, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 442, 450, 451, 453, 453, 453, 451, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 451, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 453, 453, 453, 453, 453, 453, 453, 454, 454, 454, 454, 454, 454, 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, 454, 454, 454, 454, 454, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 455, 453, 451, 456, 456, 456, 451, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 451, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 456, 456, 456, 456, 456, 456, 456, 457, 457, 457, 457, 457, 457, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 457, 457, 457, 457, 457, 457, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 458, 456, 451, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, 460, 460, 460, 460, 460, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 461, 451, 460, 460, 460, 451, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 451, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, 460, 451, 460, 460, 460, 451, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 451, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 449, 460, 449, 451, 457, 457, 457, 451, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 451, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 444, 457, 449, 444, 444, 444, 449, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 449, 444, 451, 453, 453, 453, 451, 453, 453, 453, 453, 462, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 451, 453, 453, 453, 453, 453, 462, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 453, 453, 453, 453, 453, 453, 453, 463, 463, 463, 463, 463, 463, 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, 463, 463, 463, 463, 463, 463, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 464, 453, 451, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 467, 467, 467, 467, 467, 467, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 465, 465, 465, 465, 465, 465, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 459, 459, 459, 459, 459, 459, 459, 469, 469, 469, 469, 469, 469, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 469, 469, 469, 469, 469, 469, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, 459, 459, 459, 459, 459, 459, 459, 470, 470, 470, 470, 470, 470, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 470, 470, 470, 470, 470, 470, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 459, 459, 459, 459, 459, 459, 459, 471, 471, 471, 471, 471, 471, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 471, 471, 471, 471, 471, 471, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 459, 459, 459, 459, 459, 459, 459, 472, 472, 472, 472, 472, 472, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 472, 472, 472, 472, 472, 472, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 466, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 468, 459, 451, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 451, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 473, 473, 473, 473, 473, 473, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 461, 459, 474, 451, 456, 456, 456, 451, 456, 456, 456, 456, 466, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 451, 456, 456, 456, 456, 456, 466, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 456, 456, 456, 456, 456, 456, 456, 469, 469, 469, 469, 469, 469, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 469, 469, 469, 469, 469, 469, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 468, 456, 475, 476, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 477, 477, 477, 477, 477, 477, 477, 478, 478, 478, 478, 478, 478, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 478, 478, 478, 478, 478, 478, 477, 477, 480, 479, 479, 479, 480, 479, 479, 479, 479, 481, 482, 481, 481, 481, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 480, 479, 479, 479, 479, 479, 481, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 483, 479, 481, 484, 481, 481, 481, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 481, 484, 485, 486, 486, 486, 485, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 485, 486, 488, 487, 487, 487, 488, 487, 487, 487, 487, 487, 489, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 488, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 490, 487, 491, 492, 492, 492, 491, 492, 492, 492, 492, 492, 493, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 491, 492, 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, 494, 494, 494, 494, 494, 494, 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, 494, 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, 496, 496, 496, 496, 496, 496, 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, 496, 497, 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, 74, 498, 74, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 499, 499, 499, 499, 499, 499, 499, 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, 499, 499, 499, 499, 72, 499, 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, 499, 499, 499, 499, 499, 72, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 499, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 500, 500, 500, 500, 500, 500, 500, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 500, 500, 500, 500, 77, 500, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 500, 500, 500, 500, 500, 77, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 501, 501, 501, 501, 501, 501, 501, 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, 501, 501, 501, 501, 79, 501, 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, 501, 501, 501, 501, 501, 79, 503, 504, 504, 504, 503, 504, 504, 504, 504, 505, 506, 505, 505, 505, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 503, 504, 504, 504, 504, 504, 505, 507, 504, 508, 509, 510, 511, 504, 504, 504, 512, 513, 504, 513, 504, 510, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 514, 504, 515, 516, 517, 504, 504, 518, 519, 518, 518, 520, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 521, 522, 504, 510, 523, 510, 524, 525, 526, 527, 528, 529, 502, 502, 530, 502, 502, 502, 531, 532, 533, 502, 502, 534, 535, 536, 537, 502, 538, 502, 539, 502, 504, 540, 504, 513, 504, 502, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 542, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 541, 541, 541, 542, 541, 542, 541, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 541, 541, 541, 541, 502, 541, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 541, 541, 541, 541, 541, 502, 505, 543, 505, 505, 505, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 505, 543, 544, 510, 545, 545, 510, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 510, 545, 546, 547, 548, 549, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 81, 81, 550, 81, 550, 81, 81, 550, 550, 81, 81, 81, 552, 81, 81, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 81, 81, 81, 81, 81, 81, 81, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 550, 81, 550, 550, 551, 81, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 550, 550, 550, 81, 550, 551, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 554, 554, 554, 554, 554, 554, 554, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 554, 554, 554, 554, 551, 554, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 554, 554, 554, 554, 554, 551, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 554, 510, 545, 510, 545, 510, 545, 556, 555, 510, 557, 545, 510, 545, 558, 510, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 510, 550, 510, 545, 510, 510, 545, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 542, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 541, 541, 541, 542, 541, 542, 541, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 541, 541, 541, 541, 518, 541, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 541, 541, 541, 541, 541, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 518, 560, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 518, 518, 518, 561, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 518, 518, 518, 518, 518, 562, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 563, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 564, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 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, 542, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 542, 559, 542, 559, 518, 518, 518, 563, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 559, 559, 559, 559, 559, 518, 558, 550, 506, 550, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 566, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 567, 568, 502, 502, 502, 502, 502, 569, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 570, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 571, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 572, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 573, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 574, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 575, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 576, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 577, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 578, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 579, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 580, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 576, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 581, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 580, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 582, 502, 583, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 584, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 585, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 586, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 587, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 588, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 589, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 590, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 591, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 592, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 593, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 594, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 595, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 585, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 596, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 597, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 542, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 598, 598, 598, 542, 598, 542, 598, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 598, 598, 598, 598, 502, 598, 502, 502, 502, 502, 502, 502, 502, 502, 599, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 598, 598, 598, 598, 598, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 600, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 601, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 602, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 603, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 604, 502, 605, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 606, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 578, 502, 502, 502, 607, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 608, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 609, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 594, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 610, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 533, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 592, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 611, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 612, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 613, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 594, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 614, 502, 502, 502, 615, 502, 502, 502, 502, 502, 616, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 616, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 617, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 618, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 619, 620, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 621, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 594, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 622, 502, 502, 623, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 578, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 589, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 624, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 625, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 607, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 626, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 533, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 627, 502, 502, 502, 502, 502, 502, 502, 502, 502, 621, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 589, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 628, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 629, 502, 502, 502, 502, 502, 502, 502, 630, 502, 502, 502, 502, 502, 502, 502, 631, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 607, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 595, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 615, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 632, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 589, 502, 502, 502, 613, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 633, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 634, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 542, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 542, 565, 542, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 502, 565, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 583, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 565, 565, 565, 565, 565, 502, 510, 545, 636, 637, 637, 637, 636, 637, 637, 637, 637, 638, 637, 638, 638, 638, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 636, 637, 637, 637, 637, 637, 638, 637, 637, 639, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 637, 640, 637, 637, 635, 637, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 637, 637, 637, 637, 637, 635, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 84, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 85, 641, 641, 641, 641, 84, 641, 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, 641, 641, 641, 641, 83, 641, 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, 641, 641, 641, 641, 641, 83, 638, 642, 638, 638, 638, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 638, 642, 643, 644, 645, 646, 647, 641, 648, 650, 651, 651, 651, 650, 651, 651, 651, 651, 652, 653, 652, 652, 652, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 650, 651, 651, 651, 651, 651, 652, 654, 651, 655, 651, 656, 657, 651, 651, 651, 658, 659, 651, 659, 651, 656, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 660, 661, 662, 651, 651, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 664, 665, 651, 656, 649, 656, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 651, 666, 651, 659, 651, 649, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 668, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 667, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 667, 667, 667, 667, 667, 669, 667, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 667, 667, 667, 667, 649, 667, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 667, 667, 667, 667, 667, 649, 671, 670, 672, 670, 652, 673, 652, 652, 652, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 652, 673, 674, 656, 675, 675, 656, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 656, 675, 676, 677, 678, 679, 656, 675, 656, 675, 656, 675, 656, 680, 675, 656, 675, 682, 656, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 656, 681, 656, 675, 656, 656, 675, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 668, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 683, 683, 683, 683, 683, 669, 683, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 683, 683, 683, 683, 663, 683, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 683, 683, 683, 683, 683, 663, 682, 681, 653, 681, 656, 675, 685, 684, 684, 684, 685, 684, 684, 684, 684, 686, 687, 686, 686, 686, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 685, 684, 684, 684, 684, 684, 686, 684, 684, 688, 684, 92, 689, 684, 690, 684, 691, 92, 124, 692, 126, 92, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 693, 684, 694, 124, 695, 696, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 124, 697, 124, 92, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 698, 684, 684, 684, 684, 684, 684, 684, 684, 699, 684, 684, 700, 684, 701, 684, 684, 684, 138, 139, 684, 92, 684, 702, 702, 702, 702, 702, 702, 702, 702, 702, 686, 702, 686, 686, 686, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 686, 702, 702, 702, 702, 119, 120, 702, 121, 702, 122, 123, 124, 125, 126, 127, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 128, 702, 129, 124, 130, 131, 702, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 132, 133, 124, 92, 87, 702, 87, 87, 87, 87, 87, 87, 87, 87, 134, 87, 87, 87, 87, 87, 87, 87, 87, 135, 87, 87, 136, 87, 137, 87, 87, 87, 138, 139, 702, 92, 702, 87, 86, 703, 703, 703, 86, 703, 703, 703, 703, 124, 704, 124, 124, 124, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 86, 703, 703, 703, 703, 703, 124, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 703, 124, 703, 124, 704, 124, 124, 124, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 86, 86, 86, 86, 86, 92, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 86, 124, 704, 124, 124, 124, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 86, 705, 124, 704, 124, 124, 124, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 124, 706, 706, 706, 706, 706, 706, 706, 706, 706, 707, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 124, 706, 124, 704, 124, 124, 124, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 124, 124, 86, 709, 708, 124, 708, 711, 710, 713, 714, 713, 713, 713, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 713, 712, 715, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 88, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 89, 708, 708, 708, 708, 88, 708, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 708, 708, 708, 708, 87, 708, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 708, 708, 708, 708, 708, 87, 716, 124, 704, 124, 124, 124, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 124, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 124, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 92, 708, 717, 718, 719, 720, 721, 722, 124, 704, 124, 124, 124, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 124, 708, 708, 708, 708, 708, 708, 708, 708, 708, 92, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 124, 708, 124, 710, 92, 723, 92, 723, 724, 723, 725, 725, 725, 725, 725, 725, 725, 725, 725, 95, 725, 95, 95, 95, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 95, 725, 725, 725, 725, 96, 97, 725, 98, 725, 99, 100, 101, 102, 103, 104, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 105, 725, 106, 101, 107, 108, 725, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 109, 110, 101, 111, 94, 725, 94, 94, 94, 94, 94, 94, 94, 94, 112, 94, 94, 94, 94, 94, 94, 94, 94, 113, 94, 94, 114, 94, 115, 94, 94, 94, 116, 117, 725, 111, 725, 94, 124, 723, 726, 723, 727, 723, 728, 723, 729, 164, 164, 164, 729, 164, 164, 164, 164, 730, 164, 730, 730, 730, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 729, 164, 164, 164, 164, 164, 730, 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, 731, 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, 732, 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, 732, 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, 733, 733, 733, 733, 733, 733, 733, 733, 733, 167, 733, 167, 167, 167, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 167, 733, 733, 733, 733, 733, 733, 733, 168, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 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, 733, 169, 733, 733, 166, 733, 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, 733, 733, 733, 733, 733, 166, 734, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 732, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 733, 733, 733, 733, 732, 733, 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, 733, 733, 733, 733, 166, 733, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 735, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 733, 733, 733, 733, 733, 166, 171, 733, 737, 736, 736, 736, 737, 736, 736, 736, 736, 738, 736, 738, 738, 738, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 737, 736, 736, 736, 736, 736, 738, 736, 736, 739, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 740, 736, 736, 736, 736, 736, 736, 736, 741, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, 742, 736, 738, 743, 738, 738, 738, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 738, 743, 744, 745, 746, 747, 749, 748, 750, 751, 748, 752, 754, 755, 755, 755, 754, 755, 755, 755, 755, 756, 757, 756, 756, 756, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 754, 755, 755, 755, 755, 755, 756, 755, 755, 758, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 755, 759, 755, 755, 753, 755, 753, 753, 753, 753, 753, 753, 753, 753, 760, 753, 753, 753, 753, 753, 753, 753, 753, 761, 753, 753, 762, 753, 763, 753, 753, 753, 755, 755, 755, 755, 755, 753, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 764, 764, 764, 764, 764, 764, 764, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 764, 764, 764, 764, 753, 764, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 764, 764, 764, 764, 764, 753, 756, 765, 756, 756, 756, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 756, 765, 766, 767, 768, 769, 770, 772, 771, 773, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 775, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 776, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 777, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 778, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 779, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 775, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 780, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 781, 753, 753, 753, 753, 753, 753, 753, 782, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 783, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 784, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 775, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 785, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 775, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 786, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 787, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 774, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 753, 774, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 779, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 774, 774, 774, 774, 774, 753, 789, 188, 188, 188, 789, 188, 188, 188, 188, 790, 791, 790, 790, 790, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 789, 188, 188, 188, 188, 188, 790, 792, 188, 793, 188, 794, 795, 188, 796, 188, 797, 798, 188, 799, 800, 801, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 802, 188, 803, 804, 805, 806, 188, 807, 808, 807, 807, 809, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 810, 811, 188, 812, 813, 188, 814, 815, 816, 817, 818, 819, 788, 788, 820, 788, 788, 788, 821, 822, 823, 788, 788, 824, 825, 826, 827, 788, 828, 788, 829, 788, 830, 831, 188, 812, 188, 788, 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, 242, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 177, 177, 244, 177, 245, 177, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 177, 177, 177, 177, 788, 177, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 177, 177, 177, 177, 177, 788, 833, 832, 832, 834, 832, 835, 837, 838, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 839, 836, 841, 840, 842, 843, 844, 833, 832, 790, 845, 790, 790, 790, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 790, 845, 847, 846, 849, 850, 849, 849, 849, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 849, 848, 188, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 188, 851, 852, 853, 854, 855, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 857, 857, 857, 857, 857, 857, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 857, 859, 186, 186, 186, 859, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 859, 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, 861, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 188, 860, 862, 864, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, 188, 863, 188, 177, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 860, 860, 860, 188, 860, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 860, 860, 860, 188, 188, 860, 866, 851, 188, 851, 851, 867, 867, 867, 851, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, 851, 867, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 869, 870, 851, 871, 191, 872, 870, 851, 851, 873, 874, 851, 874, 851, 191, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 875, 851, 876, 877, 878, 851, 879, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 880, 851, 851, 191, 868, 191, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 851, 881, 851, 874, 851, 868, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 883, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 882, 882, 882, 884, 882, 885, 882, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 882, 882, 882, 882, 868, 882, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 882, 882, 882, 882, 882, 868, 887, 886, 888, 890, 891, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 892, 889, 894, 895, 893, 896, 897, 898, 899, 886, 191, 882, 882, 191, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 191, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 882, 882, 882, 882, 882, 882, 882, 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, 882, 882, 882, 882, 190, 882, 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, 882, 882, 882, 882, 882, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 882, 191, 882, 191, 882, 191, 882, 191, 900, 882, 191, 882, 191, 882, 191, 191, 882, 191, 882, 901, 902, 851, 903, 188, 851, 812, 188, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 188, 851, 188, 861, 851, 906, 905, 905, 905, 906, 905, 905, 905, 905, 907, 908, 907, 907, 907, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 906, 905, 905, 905, 905, 905, 907, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 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, 905, 910, 905, 905, 909, 905, 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, 905, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 911, 911, 911, 911, 912, 911, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 911, 911, 911, 911, 911, 912, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 913, 913, 913, 913, 913, 913, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 913, 913, 913, 912, 913, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 913, 913, 913, 913, 912, 914, 915, 917, 917, 917, 917, 917, 917, 917, 917, 916, 918, 918, 918, 918, 918, 918, 918, 918, 916, 916, 919, 919, 236, 236, 236, 919, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 919, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 920, 236, 921, 922, 923, 923, 236, 236, 236, 923, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 923, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 924, 236, 235, 923, 925, 926, 927, 927, 223, 223, 223, 927, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 927, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 928, 223, 923, 216, 216, 216, 923, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 923, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 929, 216, 919, 223, 223, 223, 919, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 919, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 919, 930, 930, 930, 919, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 919, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 931, 930, 932, 933, 933, 930, 930, 930, 933, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 933, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 930, 934, 930, 933, 216, 216, 216, 933, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 933, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 929, 216, 935, 933, 933, 223, 223, 223, 933, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 933, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 936, 937, 937, 937, 936, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 936, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 937, 937, 937, 937, 937, 937, 937, 938, 938, 938, 938, 938, 938, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 938, 938, 938, 938, 938, 938, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 939, 937, 936, 940, 940, 940, 936, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 936, 940, 936, 941, 941, 941, 936, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 936, 941, 936, 942, 942, 942, 936, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 936, 942, 936, 936, 940, 940, 940, 936, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 936, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 940, 936, 941, 941, 941, 936, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 936, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 941, 936, 942, 942, 942, 936, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 936, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 942, 942, 942, 942, 942, 942, 942, 945, 945, 945, 945, 945, 945, 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, 945, 945, 945, 945, 945, 945, 942, 946, 949, 948, 948, 948, 949, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 949, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 948, 948, 948, 948, 948, 948, 948, 950, 950, 950, 950, 950, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 950, 950, 950, 950, 950, 950, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 940, 948, 949, 951, 951, 951, 949, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 949, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 951, 951, 951, 951, 951, 951, 951, 952, 952, 952, 952, 952, 952, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 952, 952, 952, 952, 952, 952, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 953, 951, 949, 954, 954, 954, 949, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 949, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 954, 954, 954, 954, 954, 954, 954, 955, 955, 955, 955, 955, 955, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 955, 955, 955, 955, 955, 955, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 956, 954, 949, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, 958, 958, 958, 958, 958, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 959, 949, 958, 958, 958, 949, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 949, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 959, 958, 949, 958, 958, 958, 949, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 949, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, 947, 958, 947, 949, 955, 955, 955, 949, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 949, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 942, 955, 947, 942, 942, 942, 947, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 947, 942, 949, 951, 951, 951, 949, 951, 951, 951, 951, 960, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 949, 951, 951, 951, 951, 951, 960, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 951, 951, 951, 951, 951, 951, 951, 961, 961, 961, 961, 961, 961, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 961, 961, 961, 961, 961, 961, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 962, 951, 949, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 957, 957, 957, 957, 957, 957, 957, 965, 965, 965, 965, 965, 965, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 965, 965, 965, 965, 965, 965, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 963, 963, 963, 963, 963, 963, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 957, 957, 957, 957, 957, 957, 957, 967, 967, 967, 967, 967, 967, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 967, 967, 967, 967, 967, 967, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 957, 957, 957, 957, 957, 957, 957, 968, 968, 968, 968, 968, 968, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 968, 968, 968, 968, 968, 968, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 957, 957, 957, 957, 957, 957, 957, 969, 969, 969, 969, 969, 969, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 969, 969, 969, 969, 969, 969, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 957, 957, 957, 957, 957, 957, 957, 970, 970, 970, 970, 970, 970, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 970, 970, 970, 970, 970, 970, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 964, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 966, 957, 949, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 949, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 971, 971, 971, 971, 971, 971, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 959, 957, 972, 949, 954, 954, 954, 949, 954, 954, 954, 954, 964, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 949, 954, 954, 954, 954, 954, 964, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 954, 954, 954, 954, 954, 954, 954, 967, 967, 967, 967, 967, 967, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 967, 967, 967, 967, 967, 967, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 966, 954, 973, 974, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 975, 975, 975, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 976, 976, 976, 976, 976, 976, 975, 975, 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, 242, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 177, 177, 244, 177, 245, 177, 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, 177, 177, 177, 177, 241, 177, 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, 177, 177, 177, 177, 177, 241, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 242, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 851, 851, 244, 851, 245, 851, 241, 241, 241, 241, 977, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 851, 851, 851, 851, 241, 851, 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, 851, 851, 851, 851, 851, 241, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 242, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 851, 851, 244, 851, 245, 851, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 978, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 851, 851, 851, 851, 241, 851, 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, 851, 851, 851, 851, 851, 241, 979, 980, 851, 846, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 982, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 983, 984, 788, 788, 788, 788, 788, 985, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 986, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 987, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 988, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 989, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 990, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 991, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 992, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 993, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 994, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 995, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 996, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 992, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 997, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 996, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 998, 788, 999, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 1000, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 1001, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1002, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1003, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 1004, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 1005, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1006, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 1007, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 1008, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1009, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1010, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 1011, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1001, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1012, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1013, 788, 1014, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1015, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 994, 788, 788, 788, 1012, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1016, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1017, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1010, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 1018, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 823, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1008, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 1019, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1020, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 1021, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1022, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1010, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1023, 788, 788, 788, 1024, 788, 788, 788, 788, 788, 1025, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1025, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1026, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 1027, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1028, 1029, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 1030, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1031, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1032, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1036, 1033, 1033, 1037, 1033, 1038, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1033, 1033, 1033, 1033, 1034, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1033, 1033, 1033, 1033, 1033, 1034, 837, 1039, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, 839, 836, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1040, 788, 788, 1041, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 994, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1005, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1042, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1043, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1012, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1044, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 823, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 1045, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1046, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1005, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1010, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1047, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 1048, 788, 788, 788, 788, 788, 788, 788, 1049, 788, 788, 788, 788, 788, 788, 788, 1050, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1012, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1051, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1052, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1019, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 1053, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1019, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 1054, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1005, 788, 788, 788, 1055, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1056, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1019, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 1057, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 1058, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 242, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 243, 981, 981, 244, 981, 245, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 788, 981, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 999, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 981, 981, 981, 981, 981, 788, 1059, 188, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, 861, 851, 1061, 1062, 1062, 1062, 1061, 1062, 1062, 1062, 1062, 1063, 1064, 1063, 1063, 1063, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1061, 1062, 1062, 1062, 1062, 1062, 1063, 1062, 1062, 1065, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1062, 1066, 1062, 1062, 1060, 1062, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1062, 1062, 1062, 1062, 1062, 1060, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 251, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 252, 1067, 1067, 1067, 1067, 251, 1067, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1067, 1067, 1067, 1067, 250, 1067, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1067, 1067, 1067, 1067, 1067, 250, 1063, 1068, 1063, 1063, 1063, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1063, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1067, 1075, 1077, 1078, 1078, 1078, 1077, 1078, 1078, 1078, 1078, 1079, 1080, 1079, 1079, 1079, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1077, 1078, 1078, 1078, 1078, 1078, 1079, 1081, 1082, 1083, 1084, 1085, 1086, 1082, 1087, 1088, 1089, 1085, 1090, 1091, 1092, 1085, 1093, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1102, 1102, 1104, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1105, 1106, 1107, 1085, 1108, 1082, 1109, 1110, 1111, 1112, 1113, 1114, 1076, 1076, 1115, 1076, 1076, 1076, 1116, 1117, 1118, 1076, 1076, 1119, 1120, 1121, 1122, 1076, 1123, 1076, 1124, 1076, 1125, 1126, 1127, 1085, 1078, 1076, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1128, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 258, 258, 258, 258, 258, 1129, 258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 258, 258, 258, 258, 1076, 258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 258, 258, 258, 258, 258, 1076, 1131, 1130, 1132, 1133, 1079, 1134, 1079, 1079, 1079, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1079, 1134, 1135, 1137, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1137, 1136, 1138, 1139, 1140, 1141, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 255, 255, 1142, 255, 1142, 255, 255, 1142, 1142, 255, 255, 255, 1143, 255, 255, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 255, 255, 255, 255, 255, 255, 255, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1142, 255, 1142, 1142, 260, 255, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1142, 1142, 1142, 255, 1142, 260, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1145, 1145, 1145, 1145, 260, 1145, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1145, 1145, 1145, 1145, 1145, 260, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1146, 1136, 1085, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1146, 1136, 1147, 1148, 1085, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1146, 1136, 1146, 1149, 1136, 1151, 1150, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1150, 1090, 1152, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1153, 1156, 1155, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1158, 1155, 1159, 1160, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1161, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1162, 1155, 1155, 1155, 1155, 1155, 1155, 1163, 1155, 1155, 1158, 1155, 1159, 1160, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1161, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1162, 1155, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1166, 1164, 1164, 1164, 1164, 1164, 1165, 1164, 1167, 1164, 1167, 1164, 1164, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1164, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1164, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1167, 1164, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1163, 1155, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1171, 1169, 1173, 1173, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1174, 1172, 1175, 1175, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1176, 1169, 1175, 1175, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1177, 1169, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1180, 1178, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1182, 1169, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1177, 1169, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1185, 1183, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1188, 1186, 1187, 1187, 1187, 1187, 1187, 1187, 1186, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1190, 1169, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1177, 1169, 1189, 1189, 1189, 1189, 1189, 1189, 1169, 1192, 1191, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1194, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1195, 1191, 1191, 1191, 1191, 1191, 1194, 1191, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1169, 1166, 1169, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1165, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1197, 1169, 1169, 1169, 1169, 1169, 1165, 1169, 1198, 1152, 1085, 1199, 1136, 1137, 1136, 1200, 1137, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1137, 1152, 1137, 1136, 1137, 1085, 1136, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1142, 1142, 1142, 1142, 1142, 1142, 1201, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1142, 1142, 1142, 1142, 260, 1142, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1142, 1142, 1142, 1142, 1142, 260, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1128, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 258, 258, 258, 258, 1129, 258, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 258, 258, 258, 258, 1102, 258, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 258, 258, 258, 258, 258, 1102, 1203, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1102, 1205, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1206, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1207, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1208, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1209, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1128, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1202, 1204, 1204, 1204, 1204, 1129, 1204, 1102, 1102, 1102, 1208, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1102, 1204, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1204, 1204, 1204, 1204, 1204, 1102, 1210, 1212, 1211, 1213, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1215, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1216, 1217, 1076, 1076, 1076, 1076, 1076, 1218, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1219, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1220, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1221, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1222, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1223, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1224, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1225, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1226, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1227, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1228, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1229, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1230, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1231, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1232, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1233, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1229, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1234, 1076, 1235, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1236, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1237, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1238, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1240, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1241, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1242, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1243, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1244, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1245, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1246, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1247, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1248, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1249, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1250, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1251, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1252, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 262, 263, 262, 262, 262, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 262, 1128, 1253, 264, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1253, 1253, 265, 1253, 1253, 1129, 1253, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1253, 266, 1253, 1253, 1076, 1253, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1253, 1253, 1253, 1253, 1253, 1076, 279, 280, 279, 279, 279, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 278, 278, 281, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 284, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 283, 278, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1255, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1256, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1257, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1128, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1258, 1258, 1258, 1258, 1258, 1129, 1258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1258, 1258, 1258, 1258, 1076, 1258, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1259, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1258, 1258, 1258, 1258, 1258, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1260, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1261, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1262, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1263, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1264, 1076, 1265, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1266, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1267, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1232, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1268, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1269, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1249, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1270, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1118, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1271, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1272, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1232, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1273, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1239, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1274, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1275, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1276, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1249, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1277, 1076, 1076, 1076, 1278, 1076, 1076, 1076, 1076, 1076, 1279, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1280, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1246, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1232, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1281, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1282, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1283, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1284, 1285, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1232, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1286, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1287, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1273, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1288, 1076, 1076, 1289, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1232, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1290, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1246, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1291, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1292, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1293, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1232, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1294, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1295, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1281, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1296, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1297, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1243, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1272, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1298, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1299, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1300, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1301, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1302, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1238, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1303, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1304, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1273, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1305, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1273, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1306, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1243, 1076, 1076, 1076, 1307, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1308, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1273, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1309, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1310, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1311, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1128, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1129, 1214, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1076, 1214, 1076, 1076, 1076, 1281, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1214, 1214, 1214, 1214, 1214, 1076, 1312, 1146, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1085, 1136, 1313, 1315, 1314, 1315, 1315, 1315, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1316, 1314, 288, 1317, 288, 288, 288, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 288, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 289, 1317, 1317, 290, 290, 290, 1317, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1317, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 1317, 290, 1319, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1320, 1318, 1319, 1318, 1319, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1322, 1318, 1319, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1323, 1318, 1319, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1324, 1318, 1326, 1324, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 152, 2, 3, 4, 158, 6, 7, 8, 9, 161, 162, 165, 162, 11, 166, 13, 162, 173, 174, 177, 178, 184, 179, 180, 181, 18, 182, 183, 186, 188, 189, 190, 191, 192, 24, 17, 175, 176, 26, 226, 227, 229, 231, 229, 29, 232, 31, 229, 239, 240, 243, 244, 250, 245, 246, 247, 36, 248, 249, 252, 254, 255, 256, 257, 258, 42, 35, 241, 242, 44, 292, 293, 303, 302, 0, 47, 304, 305, 49, 306, 307, 307, 419, 51, 52, 419, 448, 53, 54, 448, 448, 452, 452, 58, 53, 59, 450, 451, 453, 454, 452, 448, 455, 456, 450, 458, 55, 56, 459, 460, 57, 452, 60, 61, 66, 73, 462, 463, 59, 450, 451, 453, 454, 452, 448, 455, 456, 450, 458, 55, 56, 459, 460, 57, 60, 61, 66, 73, 462, 463, 461, 62, 63, 64, 65, 67, 68, 71, 69, 70, 72, 74, 75, 448, 77, 78, 79, 81, 84, 82, 83, 85, 87, 478, 478, 478, 479, 89, 481, 90, 482, 91, 479, 89, 481, 90, 482, 516, 516, 516, 94, 95, 96, 97, 528, 516, 516, 533, 516, 516, 555, 516, 101, 556, 562, 104, 107, 109, 111, 112, 113, 107, 108, 566, 108, 566, 110, 516, 573, 574, 575, 115, 121, 126, 598, 128, 578, 579, 516, 582, 583, 589, 584, 585, 586, 119, 587, 588, 591, 593, 594, 595, 596, 597, 125, 118, 580, 581, 127, 631, 632, 129, 518, 92, 520, 525, 131, 132, 634, 728, 134, 135, 136, 728, 736, 736, 736, 757, 736, 759, 747, 787, 142, 143, 144, 148, 149, 142, 143, 144, 148, 149, 145, 145, 143, 144, 146, 147, 145, 145, 143, 144, 146, 147, 834, 143, 736, 903, 150, 151, 903, 152, 152, 153, 154, 155, 157, 159, 160, 152, 152, 152, 156, 152, 156, 152, 1, 152, 152, 152, 5, 152, 152, 162, 162, 163, 162, 164, 167, 162, 162, 10, 12, 162, 162, 162, 168, 169, 170, 14, 20, 25, 193, 27, 162, 162, 162, 171, 172, 162, 15, 162, 162, 162, 16, 162, 162, 162, 19, 185, 187, 21, 162, 162, 22, 23, 162, 194, 198, 202, 195, 196, 197, 199, 200, 201, 162, 162, 203, 207, 213, 204, 211, 212, 205, 209, 210, 206, 208, 162, 214, 224, 225, 215, 216, 217, 223, 218, 219, 220, 221, 222, 162, 162, 162, 162, 228, 229, 229, 229, 230, 233, 229, 28, 30, 229, 229, 229, 234, 235, 236, 32, 38, 43, 259, 45, 229, 229, 229, 237, 238, 229, 33, 229, 229, 229, 34, 229, 229, 229, 37, 251, 253, 39, 229, 229, 40, 41, 229, 260, 264, 268, 261, 262, 263, 265, 266, 267, 229, 229, 269, 273, 279, 270, 277, 278, 271, 275, 276, 272, 274, 229, 280, 290, 291, 281, 282, 283, 289, 284, 285, 286, 287, 288, 229, 229, 229, 229, 294, 295, 295, 296, 295, 297, 295, 295, 295, 298, 298, 298, 299, 298, 298, 298, 300, 301, 300, 46, 48, 302, 302, 302, 308, 307, 307, 309, 310, 311, 312, 314, 307, 317, 318, 319, 320, 321, 323, 325, 326, 327, 331, 333, 334, 335, 351, 356, 363, 368, 375, 382, 385, 386, 390, 384, 394, 402, 406, 408, 413, 415, 418, 307, 307, 307, 307, 307, 307, 313, 307, 313, 307, 315, 50, 316, 307, 307, 307, 322, 324, 307, 328, 329, 330, 326, 332, 307, 336, 337, 346, 349, 338, 339, 340, 341, 342, 343, 344, 345, 308, 347, 348, 350, 352, 355, 353, 354, 357, 360, 358, 359, 361, 362, 364, 366, 365, 367, 369, 370, 307, 371, 372, 373, 374, 307, 376, 379, 377, 378, 380, 381, 383, 387, 388, 389, 391, 393, 392, 395, 396, 397, 399, 398, 400, 401, 403, 404, 405, 407, 409, 410, 411, 412, 414, 416, 417, 420, 419, 419, 421, 422, 424, 419, 419, 419, 423, 419, 423, 425, 419, 427, 426, 426, 431, 432, 433, 434, 426, 436, 437, 438, 439, 441, 443, 444, 445, 446, 447, 426, 428, 430, 426, 429, 426, 426, 426, 426, 426, 435, 426, 435, 440, 426, 442, 426, 448, 448, 449, 464, 465, 451, 467, 468, 455, 469, 470, 471, 448, 472, 474, 475, 476, 477, 448, 448, 448, 448, 448, 452, 448, 457, 448, 448, 448, 448, 448, 448, 448, 448, 448, 466, 448, 466, 448, 448, 473, 448, 76, 80, 86, 478, 480, 483, 88, 478, 478, 479, 484, 484, 485, 486, 488, 490, 491, 484, 484, 487, 484, 487, 484, 489, 484, 484, 484, 493, 492, 492, 494, 495, 496, 498, 500, 501, 506, 513, 492, 492, 492, 492, 497, 492, 497, 492, 499, 492, 492, 493, 502, 503, 504, 505, 507, 508, 511, 509, 510, 512, 514, 515, 517, 516, 526, 527, 529, 530, 532, 534, 535, 536, 538, 539, 540, 542, 543, 565, 568, 569, 570, 634, 635, 636, 637, 638, 537, 640, 656, 661, 668, 673, 675, 681, 684, 685, 689, 683, 693, 704, 708, 711, 719, 723, 726, 727, 516, 92, 519, 516, 516, 521, 523, 524, 516, 522, 516, 516, 516, 516, 516, 93, 516, 516, 516, 516, 516, 531, 516, 531, 516, 516, 98, 516, 516, 99, 516, 516, 537, 516, 541, 516, 544, 554, 516, 100, 557, 558, 559, 516, 560, 102, 563, 103, 105, 564, 516, 545, 547, 553, 516, 546, 516, 516, 548, 551, 552, 516, 549, 550, 516, 516, 516, 516, 561, 106, 567, 516, 516, 516, 516, 516, 516, 571, 114, 516, 572, 516, 516, 516, 516, 576, 577, 516, 116, 516, 516, 516, 117, 516, 516, 516, 120, 590, 592, 122, 516, 516, 123, 124, 516, 599, 603, 607, 600, 601, 602, 604, 605, 606, 516, 516, 608, 612, 618, 609, 616, 617, 610, 614, 615, 611, 613, 516, 619, 629, 630, 620, 621, 622, 628, 623, 624, 625, 626, 627, 516, 516, 516, 516, 633, 130, 133, 516, 639, 516, 641, 642, 651, 654, 643, 644, 645, 646, 647, 648, 649, 650, 517, 652, 653, 655, 657, 660, 658, 659, 662, 665, 663, 664, 666, 667, 669, 671, 670, 672, 674, 676, 678, 677, 679, 680, 682, 517, 686, 687, 688, 690, 692, 691, 694, 695, 696, 701, 697, 698, 699, 516, 517, 518, 92, 700, 525, 523, 702, 703, 705, 706, 707, 709, 710, 712, 713, 714, 717, 715, 716, 718, 720, 721, 722, 724, 725, 516, 729, 728, 728, 730, 731, 732, 734, 728, 728, 728, 728, 733, 728, 733, 735, 728, 737, 736, 736, 741, 742, 743, 736, 744, 746, 749, 750, 751, 752, 753, 736, 754, 755, 758, 776, 779, 736, 780, 782, 784, 736, 785, 786, 788, 792, 794, 795, 736, 797, 815, 820, 827, 835, 842, 849, 854, 855, 859, 853, 864, 874, 880, 883, 892, 896, 900, 901, 902, 738, 740, 736, 739, 736, 736, 736, 736, 736, 736, 736, 745, 736, 745, 736, 137, 748, 736, 736, 736, 736, 736, 736, 756, 736, 736, 138, 736, 139, 763, 766, 769, 760, 772, 773, 764, 736, 760, 139, 761, 762, 736, 765, 764, 736, 767, 736, 767, 768, 736, 736, 770, 736, 770, 771, 736, 770, 736, 736, 774, 736, 774, 775, 736, 139, 776, 760, 777, 778, 777, 736, 781, 783, 140, 141, 736, 736, 789, 790, 791, 786, 793, 736, 736, 796, 736, 736, 798, 799, 808, 813, 800, 801, 802, 803, 804, 805, 806, 807, 737, 809, 810, 811, 812, 737, 814, 816, 819, 817, 818, 737, 737, 821, 824, 822, 823, 825, 826, 737, 828, 830, 829, 831, 832, 833, 736, 736, 836, 737, 837, 736, 838, 839, 840, 841, 740, 843, 846, 844, 845, 847, 848, 850, 851, 852, 737, 856, 857, 858, 860, 862, 863, 861, 737, 865, 866, 867, 870, 868, 869, 871, 872, 873, 875, 877, 876, 878, 879, 881, 882, 884, 885, 887, 890, 886, 888, 889, 891, 893, 894, 895, 897, 898, 899, 736, 736, 903, 904, 905, 903, 907, 906, 908, 906, 909, 910, 911, 906, 906 ] 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, 0, 3, 0, 0, 0, 4, 0, 5, 0, 6, 0, 5, 0, 0, 0, 0, 6, 5, 0, 6, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 9, 0, 5, 0, 6, 0, 5, 0, 0, 0, 0, 6, 5, 0, 6, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 11, 12, 13, 0, 0, 14, 15, 0, 0, 16, 17, 18, 19, 20, 21, 21, 22, 23, 21, 24, 23, 25, 23, 21, 26, 21, 21, 21, 27, 21, 21, 22, 21, 21, 21, 21, 21, 21, 0, 19, 28, 0, 29, 28, 30, 28, 0, 31, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 0, 0, 0, 37, 20, 38, 21, 21, 21, 38, 39, 40, 41, 0, 0, 0, 0, 0, 42, 43, 0, 44, 45, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 48, 0, 20, 0, 49, 50, 50, 50, 50, 50, 50, 50, 50, 0, 5, 51, 0, 6, 0, 5, 0, 0, 0, 0, 6, 5, 0, 6, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 52, 0, 0, 52, 53, 0, 0, 0, 54, 55, 56, 57, 5, 58, 59, 0, 0, 0, 20, 0, 0, 0, 21, 60, 21, 21, 21, 61, 62, 63, 62, 62, 62, 0, 64, 65, 64, 64, 64, 66, 67, 68, 69, 0, 0, 70, 73, 74, 0, 20, 0, 5, 0, 5, 75, 76, 77, 61, 78, 0, 79, 0, 80, 81, 82, 0, 83, 84, 85, 86, 0, 87, 5, 5, 88, 89, 0, 0, 90, 91, 92, 50, 50, 50, 50, 50, 50, 50, 50, 93, 94, 95, 0, 0, 96, 0, 97, 98, 99, 0, 100, 101, 102, 0, 5, 0, 0, 103, 104, 0, 20, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 112, 0, 113, 114, 115, 5, 5, 116, 0, 0, 117, 118, 119, 50, 50, 50, 50, 50, 50, 50, 50, 120, 121, 122, 0, 0, 123, 0, 124, 125, 126, 0, 127, 128, 129, 0, 5, 0, 0, 130, 131, 0, 20, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 137, 138, 139, 0, 140, 141, 0, 142, 0, 143, 144, 145, 146, 147, 148, 0, 149, 150, 151, 152, 0, 153, 0, 0, 154, 155, 156, 157, 158, 159, 0, 20, 0, 0, 5, 160, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, 164, 165, 166, 167, 61, 168, 0, 169, 0, 0, 0, 170, 171, 172, 0, 0, 173, 0, 0, 0, 174, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 178, 179, 0, 0, 0, 180, 181, 182, 61, 183, 0, 20, 184, 0, 185, 186, 0, 20, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 189, 0, 190, 191, 192, 193, 194, 61, 195, 0, 0, 196, 0, 197, 198, 199, 200, 20, 0, 19, 0, 0, 19, 0, 0, 0, 201, 0, 0, 5, 5, 5, 202, 203, 204, 205, 206, 207, 208, 0, 209, 210, 211, 212, 213, 214, 215, 216, 217, 61, 218, 0, 219, 220, 221, 222, 0, 0, 0, 223, 5, 5, 0, 224, 225, 226, 227, 228, 0, 0, 0, 0, 0, 229, 230, 61, 231, 0, 232, 20, 233, 234, 235, 236, 237, 238, 0, 20, 0, 0, 0, 0, 0, 0, 239, 240, 241, 242, 61, 243, 0, 244, 20, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 249, 0, 6, 0, 0, 5, 250, 0, 0, 0, 0, 0, 0, 5, 5, 0, 251, 5, 251, 251, 251, 0, 0, 251, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 0, 251, 252, 253, 0, 254, 255, 0, 52, 0, 256, 0, 257, 258, 259, 260, 261, 21, 262, 263, 264, 265, 266, 61, 267, 0, 268, 269, 0, 270, 271, 0, 272, 273, 250, 274, 0, 275, 0, 0, 276, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, 279, 0, 280, 281, 0, 0, 0, 282, 0, 0, 283, 284, 285, 286, 0, 0, 0, 287, 288, 289, 290, 291, 292, 0, 0, 293, 0, 294, 295, 296, 297, 0, 0, 298, 0, 299, 300, 301, 0, 302, 303, 304, 0, 5, 0, 0, 305, 306, 0, 20, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 308, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 312, 313, 314, 0, 0, 0, 315, 20, 316, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 52, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 317, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 318, 319, 320, 321, 322, 322, 321, 318, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 323, 5, 324, 325, 0, 20, 0, 0, 326, 327, 328, 329, 61, 330, 0, 20, 331, 332, 333, 334, 0, 20, 0, 335, 0, 5, 0, 0, 0, 0, 0, 336, 0, 0, 337, 337, 0, 338, 0, 0, 0, 339, 5, 340, 340, 340, 0, 0, 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 342, 343, 0, 344, 345, 346, 347, 348, 349, 350, 61, 351, 0, 352, 0, 0, 353, 354, 355, 356, 357, 358, 0, 359, 360, 0, 361, 362, 362, 0, 0, 362, 0, 0, 362, 363, 0, 0, 0, 0, 364, 0, 0, 365, 366, 367, 0, 0, 368, 369, 370, 371, 0, 0, 372, 373, 374, 375, 376, 377, 0, 0, 378, 379, 380, 379, 379, 337, 0, 381, 0, 0, 0, 0, 382, 383, 340, 340, 340, 384, 340, 385, 386, 20, 387, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 384, 0, 0, 0, 0, 0, 390, 391, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 0, 0, 391, 393, 394, 0, 395, 0, 396, 0, 0, 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 400, 401, 5, 0, 402, 0, 403, 0, 404, 0, 0, 0, 405, 406 ] 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, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 71, 0, 71, 0, 71, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 71, 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, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 72, 0, 72, 0, 72, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 72, 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, 11, 11, 11, 11, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 81, 83, 83, 87, 87, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 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, 219, 219, 219, 219, 219, 208, 219, 219, 219, 219, 208, 208, 208, 178, 190, 190, 190, 190, 250, 250, 250, 255, 257, 259, 255, 259, 259, 259, 259, 259, 259, 259, 259, 259, 288, 288, 0, 300, 301, 302, 304, 306, 308, 306, 306, 312, 0, 320, 321, 325, 325, 326, 335, 336, 337, 337, 337, 340, 340, 342, 343, 344, 344, 344, 346, 347, 348, 348, 344, 340, 340, 353, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 357, 357, 367, 368, 368, 368, 368, 380, 380, 380, 368, 368, 368, 368, 380, 368, 380, 380, 380, 380, 380, 380, 380, 380, 393, 380, 394, 395, 396, 396, 0, 403, 407, 407, 408, 417, 418, 419, 419, 419, 422, 422, 424, 425, 426, 426, 426, 428, 429, 430, 430, 426, 422, 422, 435, 436, 436, 436, 436, 436, 439, 439, 439, 439, 439, 439, 439, 439, 449, 450, 450, 450, 450, 462, 462, 462, 450, 450, 450, 450, 462, 450, 462, 462, 462, 462, 462, 462, 462, 462, 475, 462, 476, 477, 478, 478, 0, 485, 486, 0, 492, 0, 497, 0, 500, 500, 501, 502, 0, 542, 544, 545, 546, 547, 549, 551, 555, 555, 546, 546, 546, 556, 546, 546, 551, 546, 546, 542, 560, 560, 560, 560, 560, 560, 551, 551, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 599, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, 546, 0, 642, 643, 644, 646, 642, 649, 0, 668, 671, 673, 671, 674, 675, 676, 677, 679, 676, 676, 676, 676, 676, 682, 676, 676, 684, 682, 682, 676, 0, 703, 87, 87, 87, 706, 707, 87, 709, 709, 711, 713, 716, 709, 717, 709, 718, 719, 721, 723, 709, 711, 724, 724, 724, 726, 724, 724, 724, 724, 0, 164, 734, 735, 734, 734, 0, 744, 745, 747, 749, 751, 749, 753, 0, 765, 766, 767, 768, 770, 772, 774, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 0, 178, 833, 836, 837, 841, 843, 844, 845, 833, 846, 847, 849, 852, 853, 855, 857, 860, 861, 863, 864, 178, 861, 861, 852, 852, 852, 852, 883, 887, 889, 890, 894, 897, 898, 899, 900, 887, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 852, 904, 852, 852, 852, 905, 912, 914, 915, 916, 917, 917, 917, 920, 920, 922, 923, 924, 924, 924, 926, 927, 928, 928, 924, 920, 920, 933, 934, 934, 934, 934, 934, 937, 937, 937, 937, 937, 937, 937, 937, 947, 948, 948, 948, 948, 960, 960, 960, 948, 948, 948, 948, 960, 948, 960, 960, 960, 960, 960, 960, 960, 960, 973, 960, 974, 975, 976, 976, 178, 852, 852, 980, 852, 847, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1034, 837, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1060, 852, 0, 1068, 1069, 1070, 1071, 1073, 1068, 1076, 0, 259, 1131, 1133, 1134, 1135, 1136, 1137, 1139, 1141, 1143, 1146, 1146, 1137, 1137, 1148, 1149, 1137, 1137, 1151, 1153, 1154, 1156, 1165, 1165, 1165, 1165, 1156, 1170, 1170, 1173, 1170, 1170, 1179, 1170, 1170, 1184, 1187, 1170, 1170, 1192, 1170, 1170, 1153, 1137, 1137, 1153, 1137, 1137, 1143, 259, 1204, 1205, 1205, 1205, 1205, 1205, 1205, 1211, 1143, 1214, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1254, 1255, 1215, 1215, 1259, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1313, 1137, 1314, 0, 1318, 1318, 0, 1322, 1322, 1322, 1322, 1326 ] class << self attr_accessor :lex_start end self.lex_start = 152; 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 = 162; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 229; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 295; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 298; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 300; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 302; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 307; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 419; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 426; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 448; class << self attr_accessor :lex_en_expr_cmdarg end self.lex_en_expr_cmdarg = 478; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 484; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 492; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 516; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 728; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 736; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 903; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 906; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 152; # line 82 "lib/parser/lexer.rl" # % attr_reader :source_buffer attr_reader :encoding attr_accessor :diagnostics attr_accessor :static_env attr_accessor :cond, :cmdarg attr_accessor :tokens, :comments def initialize(version) @version = version @static_env = nil @tokens = nil @comments = nil 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') end @source = nil # source string @source_pts = nil # @source as a codepoint array @encoding = nil # target encoding for output strings @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 @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 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".force_encoding(@encoding) else @source += "\0" end if defined?(Encoding) && @source.encoding == Encoding::UTF_8 @source_pts = @source.unpack('U*') else @source_pts = @source.unpack('C*') end if @source_pts.size > 1_000_000 && @source.respond_to?(:encode) # 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) 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, :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 # 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. _lex_trans_keys = self.class.send :_lex_trans_keys _lex_key_spans = self.class.send :_lex_key_spans _lex_index_offsets = self.class.send :_lex_index_offsets _lex_indicies = self.class.send :_lex_indicies _lex_trans_targs = self.class.send :_lex_trans_targs _lex_trans_actions = self.class.send :_lex_trans_actions _lex_to_state_actions = self.class.send :_lex_to_state_actions _lex_from_state_actions = self.class.send :_lex_from_state_actions _lex_eof_trans = self.class.send :_lex_eof_trans p, pe, eof = @p, @source.length + 1, @source.length + 1 @command_state = (@cs == self.class.lex_en_expr_value || @cs == self.class.lex_en_line_begin) # line 10513 "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 72 then # line 1 "NONE" begin @ts = p end # line 10541 "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 20 then # line 452 "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 50 then # line 722 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 21 then # line 762 "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 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 64 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 253 then # line 1079 "lib/parser/lexer.rl" begin tm = p end when 29 then # line 1347 "lib/parser/lexer.rl" begin tm = p end when 32 then # line 1376 "lib/parser/lexer.rl" begin tm = p end when 47 then # line 1561 "lib/parser/lexer.rl" begin @heredoc_e = p end when 322 then # line 1680 "lib/parser/lexer.rl" begin tm = p end when 376 then # line 1873 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 370 then # line 1875 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 373 then # line 1877 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 366 then # line 1879 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 379 then # line 1882 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 362 then # line 1885 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 5 then # line 1 "NONE" begin @te = p+1 end when 90 then # line 947 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DBEG, '#{') if literal.heredoc? literal.saved_herebody_s = @herebody_s @herebody_s = nil end literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 728 _goto_level = _again next end end end when 3 then # line 895 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 302 _goto_level = _again next end end end when 86 then # line 829 "lib/parser/lexer.rl" begin @te = p+1 begin if @te == pe diagnostic :fatal, Parser::ERRORS[:string_eof], range(literal.str_s, literal.str_s + 1) end if literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, '') # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if 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 (< unknown_options.join } diagnostic :error, message end emit(:tREGEXP_OPT) @cs = 736; begin p += 1 _goto_level = _out next end end end when 10 then # line 1138 "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 154 then # line 1138 "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 156 then # line 1151 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@@[0-9]/ message = Parser::ERRORS[:cvar_name] % { :name => tok } diagnostic :error, message end emit(:tCVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 155 then # line 1162 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@[0-9]/ message = Parser::ERRORS[:ivar_name] % { :name => tok } diagnostic :error, message end emit(:tIVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 177 then # line 1184 "lib/parser/lexer.rl" begin @te = p+1 begin emit(KEYWORDS_BEGIN[tok]); @cs = 419; begin p += 1 _goto_level = _out next end end end when 163 then # line 1192 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 419; begin p += 1 _goto_level = _out next end end end when 12 then # line 1196 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs = 736; begin @stack[ @top] = @cs @top+= 1 @cs = 302 _goto_level = _again next end end end when 160 then # line 1205 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 419; begin p += 1 _goto_level = _out next end end end when 172 then # line 1209 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 159 then # line 1217 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 158 then # line 478 "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 176 then # line 1184 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(KEYWORDS_BEGIN[tok]); @cs = 419; begin p += 1 _goto_level = _out next end end end when 173 then # line 1188 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 419; begin p += 1 _goto_level = _out next end end end when 175 then # line 1192 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 419; begin p += 1 _goto_level = _out next end end end when 170 then # line 1196 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs = 736; begin @stack[ @top] = @cs @top+= 1 @cs = 302 _goto_level = _again next end end end when 166 then # line 1205 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 419; begin p += 1 _goto_level = _out next end end end when 171 then # line 1212 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 164 then # line 1214 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 169 then # line 1217 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 11 then # line 1217 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 162 then # line 1 "NONE" begin case @act when 25 then begin begin p = (( @te))-1; end emit(KEYWORDS_BEGIN[tok]); @cs = 419; begin p += 1 _goto_level = _out next end end when 26 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 419; begin p += 1 _goto_level = _out next end end when 27 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 419; begin p += 1 _goto_level = _out next end end end end when 14 then # line 1229 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 1)) @cs = 516; begin p += 1 _goto_level = _out next end end end when 179 then # line 1235 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 178 then # line 478 "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 181 then # line 1232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 180 then # line 1235 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 13 then # line 1235 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 187 then # line 1261 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 448; begin p += 1 _goto_level = _out next end end end when 186 then # line 1267 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 185 then # line 478 "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 197 then # line 1246 "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 188 then # line 1250 "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 193 then # line 1261 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 448; begin p += 1 _goto_level = _out next end end end when 191 then # line 1264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 196 then # line 1267 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 201 then # line 1325 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 203 then # line 1333 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 210 then # line 1360 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 16 then # line 1368 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 516 _goto_level = _again next end end end when 212 then # line 1377 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 736 _goto_level = _again next end end end when 30 then # line 1386 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 198 then # line 1400 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 199 then # line 478 "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 1325 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 206 then # line 1348 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 516 _goto_level = _again next end end end when 209 then # line 1365 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 208 then # line 1386 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 202 then # line 1391 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 220 then # line 1400 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 17 then # line 1391 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 33 then # line 1400 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 15 then # line 1 "NONE" begin case @act when 51 then begin begin p = (( @te))-1; end p = p - 1; p = p - 1; begin @cs = 516 _goto_level = _again next end end when 52 then begin begin p = (( @te))-1; end diagnostic :warning, Parser::ERRORS[:ambiguous_literal], range(@te - 1, @te) p = p - 1; begin @cs = 516 _goto_level = _again next end end when 53 then begin begin p = (( @te))-1; end message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 516 _goto_level = _again next end end when 58 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 736 _goto_level = _again next end end else begin begin p = (( @te))-1; end end end end when 35 then # line 1436 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 448 _goto_level = _again next end end end when 223 then # line 478 "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 224 then # line 1436 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 448 _goto_level = _again next end end end when 36 then # line 1436 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1 begin @cs = 448 _goto_level = _again next end end end when 34 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 = 728; begin p += 1 _goto_level = _out next end end when 66 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 448 _goto_level = _again next end end end end when 234 then # line 1463 "lib/parser/lexer.rl" begin @te = p+1 begin emit_do(true) @cs = 728; begin p += 1 _goto_level = _out next end end end when 227 then # line 1469 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 228 then # line 478 "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 229 then # line 1466 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 232 then # line 1469 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 238 then # line 1493 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 237 then # line 478 "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 246 then # line 1485 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 516 _goto_level = _again next end end end when 240 then # line 1487 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 244 then # line 1493 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 239 then # line 1 "NONE" begin case @act when 73 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 516; begin p += 1 _goto_level = _out next end end when 74 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 516 _goto_level = _again next end end end end when 274 then # line 1510 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-' emit(:tUMINUS_NUM, '-', @ts, @ts + 1) @cs = 736; begin p += 1 _goto_level = _out next end end end end when 275 then # line 1530 "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 269 then # line 1537 "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 43 then # line 1544 "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 276 then # line 1585 "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 46 then # line 1599 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 736; begin p += 1 _goto_level = _out next end end end when 289 then # line 1611 "lib/parser/lexer.rl" begin @te = 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 = 736; begin p += 1 _goto_level = _out next end end end when 291 then # line 1627 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[1]] message = Parser::ERRORS[:invalid_escape_use] % { :escape => escape } diagnostic :warning, message, range p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 290 then # line 1638 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:incomplete_escape], range(@ts, @ts + 1) end end when 277 then # line 1675 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 40 then # line 1695 "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 = 736; else @cs = (arg_or_cmdarg); end else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) end begin p += 1 _goto_level = _out next end end end when 263 then # line 1740 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 152 _goto_level = _again next end end end when 44 then # line 1753 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 736 _goto_level = _again next end end end when 249 then # line 478 "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 273 then # line 1520 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR) begin p += 1 _goto_level = _out next end end end when 270 then # line 1544 "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 268 then # line 1550 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, Parser::ERRORS[:string_eof], range(@ts, @ts + 1) end end when 278 then # line 1599 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 736; begin p += 1 _goto_level = _out next end end end when 293 then # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 288 then # line 1638 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, Parser::ERRORS[:incomplete_escape], range(@ts, @ts + 1) end end when 294 then # line 1645 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 271 then # line 1675 "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 316 then # line 1123 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; 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 260 then # line 1737 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 262 then # line 1740 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 152 _goto_level = _again next end end end when 265 then # line 1753 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 736 _goto_level = _again next end end end when 42 then # line 1550 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, Parser::ERRORS[:string_eof], range(@ts, @ts + 1) end end when 51 then # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 49 then # line 1638 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, Parser::ERRORS[:incomplete_escape], range(@ts, @ts + 1) end end when 41 then # line 1737 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 45 then # line 1753 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 736 _goto_level = _again next end end end when 39 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 = 492; begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 728; begin p += 1 _goto_level = _out next end end when 99 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 736 _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 = 736; 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 = 736 _goto_level = _again next end end end end when 54 then # line 1763 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 325 then # line 1772 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 324 then # line 478 "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 327 then # line 1766 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 326 then # line 1772 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 53 then # line 1772 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 516 _goto_level = _again next end end end when 357 then # line 1783 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION, @ts, @ts + 2) @lambda_stack.push @paren_nest begin p += 1 _goto_level = _out next end end end when 68 then # line 1820 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 728; begin p += 1 _goto_level = _out next end end end when 368 then # line 1888 "lib/parser/lexer.rl" begin @te = p+1 begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 335 then # line 1935 "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 1953 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 302 _goto_level = _again next end end end when 381 then # line 1960 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 426; begin p += 1 _goto_level = _out next end end end when 349 then # line 1979 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 341 then # line 1983 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if %w"} ]".include?(tok) @cs = 484; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 354 then # line 1997 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 516; begin p += 1 _goto_level = _out next end end end when 339 then # line 2001 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 728; begin p += 1 _goto_level = _out next end end end when 336 then # line 2009 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 338 then # line 2022 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 728; begin p += 1 _goto_level = _out next end end end when 386 then # line 2025 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, Parser::ERRORS[:bare_backslash], range(@ts, @ts + 1) p = p - 1; end end when 334 then # line 2032 "lib/parser/lexer.rl" begin @te = p+1 begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 333 then # line 478 "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 396 then # line 1816 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 307; begin p += 1 _goto_level = _out next end end end when 394 then # line 1820 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 728; begin p += 1 _goto_level = _out next end end end when 393 then # line 1831 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 728; begin p += 1 _goto_level = _out next end end end when 364 then # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 360 then # line 1910 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] end end when 363 then # line 1919 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok.end_with? 'e' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => 'e' }, range(@te - 1, @te) end emit(:tFLOAT, tok.to_f) begin p += 1 _goto_level = _out next end end end when 383 then # line 1945 "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 353 then # line 1953 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 302 _goto_level = _again next end end end when 358 then # line 1960 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 426; begin p += 1 _goto_level = _out next end end end when 388 then # line 1123 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; 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 348 then # line 1979 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 359 then # line 2009 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 346 then # line 2016 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 352 then # line 2032 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 57 then # line 1910 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] end end when 55 then # line 2032 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 58 then # line 1 "NONE" begin case @act when 111 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 = 728; begin p += 1 _goto_level = _out next end end when 112 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 307; begin p += 1 _goto_level = _out next end end when 113 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 728; begin p += 1 _goto_level = _out next end end when 114 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 516; begin p += 1 _goto_level = _out next end end when 115 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 728; begin p += 1 _goto_level = _out next end end when 116 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 492; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 516; begin p += 1 _goto_level = _out next end else @cs = 448; begin p += 1 _goto_level = _out next end end end when 118 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; else @cs = (arg_or_cmdarg); end else emit_table(KEYWORDS) end begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end when 122 then begin begin p = (( @te))-1; end if tok.end_with? 'e' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => 'e' }, range(@te - 1, @te) end emit(:tFLOAT, tok.to_f) begin p += 1 _goto_level = _out next end end when 124 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 129 then begin begin p = (( @te))-1; end emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 448; begin p += 1 _goto_level = _out next end end end end when 70 then # line 2045 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 401 then # line 2049 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 152; begin p += 1 _goto_level = _out next end end end when 402 then # line 2049 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 152; begin p += 1 _goto_level = _out next end end end when 69 then # line 2049 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 152; begin p += 1 _goto_level = _out next end end end when 405 then # line 2059 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = 152 _goto_level = _again next end end end when 404 then # line 2067 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, Parser::ERRORS[:embedded_document], range(@eq_begin_s, @eq_begin_s + '=begin'.length) end end when 81 then # line 2077 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 906 _goto_level = _again next end end end when 73 then # line 2084 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 728 _goto_level = _again next end end end when 74 then # line 478 "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 75 then # line 2074 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 80 then # line 2077 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 906 _goto_level = _again next end end end when 83 then # line 2081 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = pe - 1 end end when 79 then # line 2084 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 728 _goto_level = _again next end end end when 1 then # line 2084 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 728 _goto_level = _again next end end end when 67 then # line 452 "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 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 87 then # line 452 "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 829 "lib/parser/lexer.rl" begin @te = p+1 begin if @te == pe diagnostic :fatal, Parser::ERRORS[:string_eof], range(literal.str_s, literal.str_s + 1) end if literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, '') # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if 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]] message = Parser::ERRORS[:invalid_escape_use] % { :escape => escape } diagnostic :warning, message, range p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 264 then # line 452 "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 1740 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 152 _goto_level = _again next end end end when 406 then # line 452 "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 2059 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = 152 _goto_level = _again next end end end when 403 then # line 452 "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 2064 "lib/parser/lexer.rl" begin @te = p+1 end when 82 then # line 452 "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 2077 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 906 _goto_level = _again next end end end when 84 then # line 452 "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 2081 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 1 end end when 109 then # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 136 then # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 311 then # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 93 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 120 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 295 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 96 then # line 617 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_escape] end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 123 then # line 617 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_escape] end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 298 then # line 617 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_escape] end end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 98 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 125 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 300 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 95 then # line 645 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 122 then # line 645 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 297 then # line 645 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 112 then # line 649 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 139 then # line 649 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 314 then # line 649 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 106 then # line 652 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 133 then # line 652 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 308 then # line 652 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 111 then # line 657 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_hex_escape], range(@escape_s - 1, p + 2) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 138 then # line 657 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_hex_escape], range(@escape_s - 1, p + 2) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 313 then # line 657 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_hex_escape], range(@escape_s - 1, p + 2) end end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 105 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 132 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 307 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 108 then # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 135 then # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 310 then # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 94 then # line 715 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 121 then # line 715 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 296 then # line 715 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 145 then # line 722 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 781 "lib/parser/lexer.rl" begin @te = p+1 begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 150 then # line 722 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 781 "lib/parser/lexer.rl" begin @te = p+1 begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 60 then # line 762 "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 452 "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 762 "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 1347 "lib/parser/lexer.rl" begin tm = p end when 27 then # line 762 "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 1376 "lib/parser/lexer.rl" begin tm = p end when 165 then # line 762 "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 1214 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 184 then # line 762 "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 1232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 192 then # line 762 "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 1264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 25 then # line 762 "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 1386 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 222 then # line 762 "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 1391 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 216 then # line 762 "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 1397 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 233 then # line 762 "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 1466 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 245 then # line 762 "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 1487 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 241 then # line 762 "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 1490 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 736 _goto_level = _again next end end end when 261 then # line 762 "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 1737 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 331 then # line 762 "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 1766 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 328 then # line 762 "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 1769 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 152 _goto_level = _again next end end end when 387 then # line 762 "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 2016 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 347 then # line 762 "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 2019 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 903 _goto_level = _again next end end end when 76 then # line 762 "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 2074 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 215 then # line 919 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end # line 1308 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 736 _goto_level = _again next end else emit(:tLCURLY, '{', @te - 1, @te) @cs = 728; begin p += 1 _goto_level = _out next end end end end when 235 then # line 919 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end # line 1459 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG) @cs = 728; end end when 323 then # line 919 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end # line 1656 "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 399 then # line 919 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end # line 1791 "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 = 728; begin p += 1 _goto_level = _out next end end end when 400 then # line 927 "lib/parser/lexer.rl" begin if literal if 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 literal.saved_herebody_s @herebody_s = literal.saved_herebody_s end p = p - 1; @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end end # line 1983 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if %w"} ]".include?(tok) @cs = 484; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 62 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 65 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 452 "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 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1214 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 183 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 195 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 218 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1394 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 736 _goto_level = _again next end end end when 231 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1466 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 243 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1487 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 267 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1737 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 330 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1766 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 351 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2016 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 78 then # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2074 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 189 then # line 1079 "lib/parser/lexer.rl" begin tm = p end # line 1254 "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 279 then # line 1079 "lib/parser/lexer.rl" begin tm = p end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 252 then # line 1079 "lib/parser/lexer.rl" begin tm = p end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 343 then # line 1079 "lib/parser/lexer.rl" begin tm = p end # line 1967 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 448; begin p += 1 _goto_level = _out next end end end when 345 then # line 1079 "lib/parser/lexer.rl" begin tm = p end # line 1 "NONE" begin case @act when 111 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 = 728; begin p += 1 _goto_level = _out next end end when 112 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 307; begin p += 1 _goto_level = _out next end end when 113 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 728; begin p += 1 _goto_level = _out next end end when 114 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 516; begin p += 1 _goto_level = _out next end end when 115 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 728; begin p += 1 _goto_level = _out next end end when 116 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 492; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 516; begin p += 1 _goto_level = _out next end else @cs = 448; begin p += 1 _goto_level = _out next end end end when 118 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; else @cs = (arg_or_cmdarg); end else emit_table(KEYWORDS) end begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end when 122 then begin begin p = (( @te))-1; end if tok.end_with? 'e' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => 'e' }, range(@te - 1, @te) end emit(:tFLOAT, tok.to_f) begin p += 1 _goto_level = _out next end end when 124 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 736; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 129 then begin begin p = (( @te))-1; end emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 448; begin p += 1 _goto_level = _out next end end end end when 190 then # line 1080 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1254 "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 280 then # line 1080 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 254 then # line 1080 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 344 then # line 1080 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1967 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 448; begin p += 1 _goto_level = _out next end end end when 281 then # line 1085 "lib/parser/lexer.rl" begin tm = p end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 255 then # line 1085 "lib/parser/lexer.rl" begin tm = p end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 282 then # line 1086 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 256 then # line 1086 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 286 then # line 1087 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 259 then # line 1087 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 285 then # line 1088 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 258 then # line 1088 "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 = 492; begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 728; begin p += 1 _goto_level = _out next end end when 99 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 736 _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 = 736; 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 = 736 _goto_level = _again next end end end end when 283 then # line 1089 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 257 then # line 1089 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1725 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 736 _goto_level = _again next end end end when 284 then # line 1094 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1591 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 736; begin p += 1 _goto_level = _out next end end end when 382 then # line 1099 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1949 "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 1105 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1302 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '[', @te - 1, @te) @cs = 516; begin p += 1 _goto_level = _out next end end end when 315 then # line 1105 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1670 "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 385 then # line 1105 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 2005 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 205 then # line 1112 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1283 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if version?(18) emit(:tLPAREN2, '(', @te - 1, @te) @cs = 728; begin p += 1 _goto_level = _out next end else emit(:tLPAREN_ARG, '(', @te - 1, @te) @cs = 516; begin p += 1 _goto_level = _out next end end end end when 219 then # line 1112 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1296 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2) @cs = 516; begin p += 1 _goto_level = _out next end end end when 225 then # line 1112 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1413 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '(', @te - 1, @te) if version?(18) @cs = 728; begin p += 1 _goto_level = _out next end else @cs = 516; begin p += 1 _goto_level = _out next end end end end when 272 then # line 1112 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1670 "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 355 then # line 1112 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1979 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 516; begin p += 1 _goto_level = _out next end end end when 356 then # line 1118 "lib/parser/lexer.rl" begin @paren_nest -= 1 end # line 1983 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if %w"} ]".include?(tok) @cs = 484; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 48 then # line 1561 "lib/parser/lexer.rl" begin @heredoc_e = p end # line 452 "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 287 then # line 1562 "lib/parser/lexer.rl" begin new_herebody_s = p end # line 1563 "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 319 then # line 1680 "lib/parser/lexer.rl" begin tm = p end # line 1681 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS_BEGIN, @ts, tm) p = tm - 1 @cs = 492; begin p += 1 _goto_level = _out next end end end when 377 then # line 1873 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p+1 begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 375 then # line 1873 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 371 then # line 1875 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p+1 begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 369 then # line 1875 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 374 then # line 1877 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p+1 begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 372 then # line 1877 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 367 then # line 1879 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p+1 begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 365 then # line 1879 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 378 then # line 1882 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 361 then # line 1885 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 1888 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_in_number] % { :character => '_' }, 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, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base)) begin p += 1 _goto_level = _out next end end end when 6 then # line 1 "NONE" begin @te = p+1 end # line 452 "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 174 then # line 1 "NONE" begin @te = p+1 end # line 1184 "lib/parser/lexer.rl" begin @act = 25; end when 161 then # line 1 "NONE" begin @te = p+1 end # line 1188 "lib/parser/lexer.rl" begin @act = 26; end when 157 then # line 1 "NONE" begin @te = p+1 end # line 1192 "lib/parser/lexer.rl" begin @act = 27; end when 18 then # line 1 "NONE" begin @te = p+1 end # line 1333 "lib/parser/lexer.rl" begin @act = 51; end when 31 then # line 1 "NONE" begin @te = p+1 end # line 1338 "lib/parser/lexer.rl" begin @act = 52; end when 207 then # line 1 "NONE" begin @te = p+1 end # line 1348 "lib/parser/lexer.rl" begin @act = 53; end when 19 then # line 1 "NONE" begin @te = p+1 end # line 1386 "lib/parser/lexer.rl" begin @act = 58; end when 200 then # line 1 "NONE" begin @te = p+1 end # line 1391 "lib/parser/lexer.rl" begin @act = 59; end when 226 then # line 1 "NONE" begin @te = p+1 end # line 1423 "lib/parser/lexer.rl" begin @act = 65; end when 37 then # line 1 "NONE" begin @te = p+1 end # line 1436 "lib/parser/lexer.rl" begin @act = 66; end when 247 then # line 1 "NONE" begin @te = p+1 end # line 1481 "lib/parser/lexer.rl" begin @act = 73; end when 236 then # line 1 "NONE" begin @te = p+1 end # line 1485 "lib/parser/lexer.rl" begin @act = 74; end when 250 then # line 1 "NONE" begin @te = p+1 end # line 1675 "lib/parser/lexer.rl" begin @act = 95; end when 318 then # line 1 "NONE" begin @te = p+1 end # line 1681 "lib/parser/lexer.rl" begin @act = 96; end when 317 then # line 1 "NONE" begin @te = p+1 end # line 1687 "lib/parser/lexer.rl" begin @act = 97; end when 52 then # line 1 "NONE" begin @te = p+1 end # line 1725 "lib/parser/lexer.rl" begin @act = 99; end when 248 then # line 1 "NONE" begin @te = p+1 end # line 1123 "lib/parser/lexer.rl" begin @act = 100; end when 251 then # line 1 "NONE" begin @te = p+1 end # line 1753 "lib/parser/lexer.rl" begin @act = 103; end when 395 then # line 1 "NONE" begin @te = p+1 end # line 1791 "lib/parser/lexer.rl" begin @act = 111; end when 390 then # line 1 "NONE" begin @te = p+1 end # line 1816 "lib/parser/lexer.rl" begin @act = 112; end when 398 then # line 1 "NONE" begin @te = p+1 end # line 1826 "lib/parser/lexer.rl" begin @act = 114; end when 391 then # line 1 "NONE" begin @te = p+1 end # line 1831 "lib/parser/lexer.rl" begin @act = 115; end when 392 then # line 1 "NONE" begin @te = p+1 end # line 1835 "lib/parser/lexer.rl" begin @act = 116; end when 397 then # line 1 "NONE" begin @te = p+1 end # line 1839 "lib/parser/lexer.rl" begin @act = 117; end when 389 then # line 1 "NONE" begin @te = p+1 end # line 1850 "lib/parser/lexer.rl" begin @act = 118; end when 384 then # line 1 "NONE" begin @te = p+1 end # line 1866 "lib/parser/lexer.rl" begin @act = 119; end when 337 then # line 1 "NONE" begin @te = p+1 end # line 1888 "lib/parser/lexer.rl" begin @act = 120; end when 59 then # line 1 "NONE" begin @te = p+1 end # line 1919 "lib/parser/lexer.rl" begin @act = 122; end when 340 then # line 1 "NONE" begin @te = p+1 end # line 1945 "lib/parser/lexer.rl" begin @act = 124; end when 332 then # line 1 "NONE" begin @te = p+1 end # line 1123 "lib/parser/lexer.rl" begin @act = 128; end when 342 then # line 1 "NONE" begin @te = p+1 end # line 1967 "lib/parser/lexer.rl" begin @act = 129; end when 151 then # line 452 "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 829 "lib/parser/lexer.rl" begin @te = p+1 begin if @te == pe diagnostic :fatal, Parser::ERRORS[:string_eof], range(literal.str_s, literal.str_s + 1) end if literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, '') # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if 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 (< "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 126 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 301 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 104 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 131 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 306 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 103 then # line 633 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 130 then # line 633 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 305 then # line 633 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 101 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 128 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 303 then # line 638 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 97 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 124 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 299 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 110 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 137 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 312 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 586 "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, Parser::ERRORS[:unicode_point_too_large], 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 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 107 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 134 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 309 then # line 672 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end # line 686 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 92 then # line 722 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 715 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 119 then # line 722 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 715 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 63 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 452 "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 167 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1214 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 182 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1232 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 194 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 217 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1394 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 736 _goto_level = _again next end end end when 230 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1466 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 242 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1487 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 266 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1737 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 329 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1766 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 350 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2016 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 77 then # line 1035 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2074 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 221 then # line 1 "NONE" begin @te = p+1 end # line 452 "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 1391 "lib/parser/lexer.rl" begin @act = 59; end when 26 then # line 1 "NONE" begin @te = p+1 end # line 762 "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 @act = 52; end when 22 then # line 1 "NONE" begin @te = p+1 end # line 762 "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 1386 "lib/parser/lexer.rl" begin @act = 58; end when 38 then # line 1 "NONE" begin @te = p+1 end # line 762 "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 1436 "lib/parser/lexer.rl" begin @act = 66; end when 66 then # line 1 "NONE" begin @te = p+1 end # line 1038 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1820 "lib/parser/lexer.rl" begin @act = 113; end when 28 then # line 1 "NONE" begin @te = p+1 end # line 1347 "lib/parser/lexer.rl" begin tm = p end # line 1348 "lib/parser/lexer.rl" begin @act = 53; end when 321 then # line 1 "NONE" begin @te = p+1 end # line 1680 "lib/parser/lexer.rl" begin tm = p end # line 1725 "lib/parser/lexer.rl" begin @act = 99; end when 320 then # line 1 "NONE" begin @te = p+1 end # line 1680 "lib/parser/lexer.rl" begin tm = p end # line 1123 "lib/parser/lexer.rl" begin @act = 100; end when 380 then # line 1 "NONE" begin @te = p+1 end # line 1882 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 1888 "lib/parser/lexer.rl" begin @act = 120; end when 102 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 129 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 304 then # line 609 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 100 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 127 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 781 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if 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 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 literal.regexp? # Regular expressions should have every escape sequence in its # raw form. literal.extend_string(tok, @ts, @te) else 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 literal.regexp? # Ditto. Also, expand escaped newlines. literal.extend_string(tok.gsub("\\\n", ''), @ts, @te) else literal.extend_string(@escape || tok, @ts, @te) end end end end end when 302 then # line 639 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 623 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 627 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1611 "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 = 736; begin p += 1 _goto_level = _out next end end end when 23 then # line 1 "NONE" begin @te = p+1 end # line 762 "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 1347 "lib/parser/lexer.rl" begin tm = p end # line 1348 "lib/parser/lexer.rl" begin @act = 53; end # line 20133 "lib/parser/lexer.rb" end end end if _goto_level <= _again case _lex_to_state_actions[ @cs] when 71 then # line 1 "NONE" begin @ts = nil; end # line 20143 "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 253 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == self.class.lex_error [ false, [ '$error', range(p - 1, p) ] ] else [ false, [ '$eof', range(p, p) ] ] 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[s...e].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, message, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, message, 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, } 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 2089 "lib/parser/lexer.rl" # % end