# -*- encoding:utf-8; warn-indent:false; frozen_string_literal: true -*- # line 1 "lib/parser/lexer.rl" # line 3 "lib/parser/lexer.rl" # # === BEFORE YOU START === # # Read the Ruby Hacking Guide chapter 11, available in English at # http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/ # # Remember two things about Ragel scanners: # # 1) Longest match wins. # # 2) If two matches have the same length, the first # in source code wins. # # General rules of making Ragel and Bison happy: # # * `p` (position) and `@te` contain the index of the character # they're pointing to ("current"), plus one. `@ts` contains the index # of the corresponding character. The code for extracting matched token is: # # @source_buffer.slice(@ts...@te) # # * If your input is `foooooooobar` and the rule is: # # 'f' 'o'+ # # the result will be: # # foooooooobar # ^ ts=0 ^ p=te=9 # # * A Ragel lexer action should not emit more than one token, unless # you know what you are doing. # # * All Ragel commands (fnext, fgoto, ...) end with a semicolon. # # * If an action emits the token and transitions to another state, use # these Ragel commands: # # emit($whatever) # fnext $next_state; fbreak; # # If you perform `fgoto` in an action which does not emit a token nor # rewinds the stream pointer, the parser's side-effectful, # context-sensitive lookahead actions will break in a hard to detect # and debug way. # # * If an action does not emit a token: # # fgoto $next_state; # # * If an action features lookbehind, i.e. matches characters with the # intent of passing them to another action: # # p = @ts - 1 # fgoto $next_state; # # or, if the lookbehind consists of a single character: # # fhold; fgoto $next_state; # # * Ragel merges actions. So, if you have `e_lparen = '(' %act` and # `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result # _will_ invoke the action `act`. # # e_something stands for "something with **e**mbedded action". # # * EOF is explicit and is matched by `c_eof`. If you want to introspect # the state of the lexer, add this rule to the state: # # c_eof => do_eof; # # * If you proceed past EOF, the lexer will complain: # # NoMethodError: undefined method `ord' for nil:NilClass # class Parser::Lexer # line 85 "lib/parser/lexer.rb" class << self attr_accessor :_lex_trans_keys private :_lex_trans_keys, :_lex_trans_keys= end self._lex_trans_keys = [ 0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 26, 0, 127, 58, 58, 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, 9, 92, 10, 10, 9, 92, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 10, 10, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 93, 93, 0, 127, 0, 127, 10, 10, 34, 34, 10, 10, 39, 39, 0, 127, 96, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 115, 115, 99, 99, 117, 117, 101, 101, 115, 115, 99, 99, 117, 117, 101, 101, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 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, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 0, 48, 102, 0, 0, 0, 92, 9, 32, 0, 26, 0, 92, 0, 26, 0, 35, 36, 123, 0, 127, 48, 57, 0, 26, 0, 35, 9, 32, 36, 123, 0, 127, 48, 57, 0, 32, 9, 32, 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, 115, 115, 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, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 65, 122, 0, 122, 38, 61, 0, 0, 42, 61, 61, 61, 9, 92, 9, 92, 9, 92, 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, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 124, 124, 64, 64, 60, 61, 0, 0, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 48, 123, 48, 102, 48, 102, 48, 102, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 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, 0, 127, 61, 126, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 92, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 102, 102, 0, 0, 101, 105, 0, 0, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0 ] class << self attr_accessor :_lex_key_spans private :_lex_key_spans, :_lex_key_spans= end self._lex_key_spans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 27, 128, 1, 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, 84, 1, 84, 1, 1, 1, 1, 1, 1, 123, 1, 84, 84, 84, 84, 84, 1, 128, 128, 66, 128, 128, 1, 128, 128, 1, 1, 1, 1, 128, 1, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 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, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 0, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 27, 36, 24, 88, 128, 10, 33, 24, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 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, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 24, 1, 24, 66, 1, 1, 58, 123, 24, 0, 20, 1, 84, 84, 84, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 0, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 76, 55, 55, 55, 0, 126, 126, 0, 126, 0, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 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, 128, 66, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 93, 24, 0, 1, 1, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 1, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 54, 48, 75, 67, 15, 58, 1, 0, 5, 0, 0, 67, 67, 67, 67, 10, 1, 0, 5, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3669, 3798, 3927, 4056, 4185, 4314, 4443, 4471, 4600, 4602, 4604, 4733, 4735, 4737, 4739, 4741, 4870, 4999, 5128, 5257, 5386, 5515, 5644, 5773, 5902, 6031, 6160, 6289, 6418, 6547, 6676, 6805, 6934, 7063, 7065, 7067, 7069, 7071, 7081, 7083, 7085, 7087, 7089, 7091, 7093, 7095, 7097, 7226, 7228, 7357, 7442, 7444, 7529, 7531, 7533, 7535, 7537, 7539, 7541, 7665, 7667, 7752, 7837, 7922, 8007, 8092, 8094, 8223, 8352, 8419, 8548, 8677, 8679, 8808, 8937, 8939, 8941, 8943, 8945, 9074, 9076, 9123, 9202, 9281, 9375, 9403, 9431, 9478, 9579, 9607, 9641, 9643, 9737, 9816, 9920, 10049, 10178, 10307, 10436, 10565, 10694, 10696, 10698, 10827, 10843, 10854, 10865, 10876, 10887, 10889, 10891, 10893, 10895, 10897, 10899, 10901, 10903, 11032, 11034, 11119, 11204, 11289, 11374, 11459, 11544, 11546, 11548, 11587, 11589, 11686, 11711, 11712, 11714, 11716, 11718, 11743, 11745, 11747, 11841, 11866, 11955, 12084, 12095, 12217, 12218, 12219, 12228, 12237, 12238, 12239, 12333, 12334, 12335, 12336, 12430, 12432, 12433, 12434, 12435, 12529, 12576, 12670, 12764, 12765, 12766, 12860, 12907, 12909, 13003, 13080, 13136, 13192, 13248, 13249, 13376, 13503, 13504, 13631, 13632, 13759, 13886, 14013, 14140, 14141, 14268, 14395, 14522, 14649, 14776, 14903, 14904, 14905, 14961, 14962, 15056, 15145, 15274, 15285, 15407, 15408, 15409, 15418, 15427, 15428, 15429, 15523, 15524, 15525, 15526, 15620, 15622, 15623, 15624, 15625, 15719, 15766, 15860, 15954, 15955, 15956, 16050, 16097, 16099, 16193, 16270, 16326, 16382, 16438, 16439, 16566, 16693, 16694, 16821, 16822, 16949, 17076, 17203, 17330, 17331, 17458, 17585, 17712, 17839, 17966, 18093, 18094, 18095, 18151, 18152, 18246, 18271, 18299, 18393, 18421, 18458, 18547, 18676, 18687, 18715, 18752, 18777, 18866, 18995, 19006, 19040, 19065, 19124, 19183, 19213, 19342, 19353, 19482, 19611, 19740, 19869, 19894, 19895, 19962, 19964, 19966, 20095, 20224, 20235, 20237, 20239, 20241, 20243, 20245, 20248, 20250, 20317, 20319, 20322, 20451, 20580, 20709, 20838, 20967, 21096, 21225, 21227, 21229, 21358, 21487, 21616, 21745, 21874, 22003, 22132, 22261, 22390, 22519, 22648, 22777, 22906, 23035, 23164, 23293, 23422, 23551, 23680, 23809, 23938, 24067, 24196, 24325, 24454, 24583, 24712, 24841, 24970, 25099, 25228, 25357, 25486, 25615, 25744, 25873, 26002, 26131, 26260, 26389, 26518, 26647, 26776, 26905, 27034, 27163, 27292, 27421, 27550, 27679, 27808, 27937, 28066, 28195, 28324, 28453, 28582, 28711, 28840, 28969, 29098, 29227, 29356, 29485, 29614, 29743, 29872, 30001, 30130, 30259, 30388, 30517, 30646, 30775, 30904, 31033, 31162, 31291, 31420, 31549, 31678, 31807, 31936, 31938, 32067, 32196, 32221, 32223, 32225, 32227, 32228, 32357, 32486, 32488, 32489, 32514, 32515, 32582, 32584, 32586, 32588, 32590, 32592, 32595, 32597, 32664, 32666, 32669, 32798, 32800, 32802, 32804, 32932, 33061, 33124, 33178, 33232, 33233, 33287, 33342, 33344, 33346, 33348, 33373, 33374, 33503, 33504, 33621, 33622, 33624, 33626, 33627, 33681, 33683, 33685, 33687, 33712, 33714, 33843, 33845, 33847, 33849, 33851, 33980, 34109, 34238, 34239, 34368, 34370, 34495, 34520, 34522, 34524, 34526, 34527, 34529, 34530, 34659, 34788, 34813, 34814, 34816, 34818, 34820, 34821, 34950, 35079, 35208, 35337, 35466, 35595, 35724, 35853, 35982, 36111, 36240, 36369, 36498, 36627, 36756, 36885, 37014, 37143, 37148, 37149, 37216, 37218, 37219, 37220, 37221, 37246, 37248, 37273, 37340, 37342, 37344, 37403, 37527, 37552, 37553, 37574, 37576, 37661, 37746, 37831, 37833, 37835, 37863, 37992, 38121, 38123, 38124, 38191, 38194, 38195, 38196, 38197, 38198, 38265, 38394, 38405, 38407, 38409, 38411, 38414, 38416, 38418, 38421, 38423, 38425, 38428, 38429, 38431, 38498, 38501, 38625, 38626, 38755, 38884, 39006, 39007, 39008, 39017, 39026, 39027, 39028, 39122, 39123, 39124, 39125, 39219, 39221, 39222, 39223, 39224, 39318, 39365, 39459, 39553, 39554, 39555, 39649, 39696, 39698, 39792, 39869, 39925, 39981, 40037, 40038, 40165, 40292, 40293, 40420, 40421, 40548, 40675, 40802, 40929, 40930, 41057, 41184, 41311, 41438, 41565, 41692, 41819, 41946, 42073, 42200, 42327, 42454, 42581, 42708, 42835, 42962, 43089, 43216, 43343, 43344, 43345, 43401, 43402, 43531, 43660, 43789, 43790, 43792, 43793, 43922, 44051, 44180, 44309, 44438, 44567, 44696, 44825, 44954, 45083, 45212, 45341, 45470, 45599, 45728, 45857, 45986, 46115, 46244, 46373, 46502, 46631, 46760, 46889, 47018, 47147, 47276, 47405, 47534, 47663, 47792, 47921, 48050, 48179, 48308, 48437, 48566, 48695, 48824, 48953, 49082, 49211, 49340, 49469, 49598, 49727, 49856, 49985, 50114, 50243, 50372, 50501, 50630, 50759, 50888, 51017, 51146, 51275, 51404, 51533, 51662, 51729, 51858, 51987, 52116, 52245, 52374, 52503, 52632, 52761, 52890, 53019, 53148, 53277, 53406, 53535, 53664, 53793, 53922, 54051, 54180, 54309, 54438, 54567, 54696, 54825, 54954, 54955, 55020, 55114, 55139, 55140, 55142, 55144, 55146, 55147, 55276, 55405, 55430, 55431, 55433, 55435, 55437, 55438, 55567, 55696, 55698, 55699, 55724, 55725, 55792, 55794, 55796, 55925, 56054, 56065, 56067, 56092, 56093, 56094, 56115, 56118, 56131, 56133, 56188, 56237, 56313, 56381, 56397, 56456, 56458, 56459, 56465, 56466, 56467, 56535, 56603, 56671, 56739, 56750, 56752, 56753, 56759, 56760, 56761, 56829, 56897, 56965, 57033, 57101, 57169, 57237, 57305, 57375, 57443, 57513, 57581, 57583, 57586, 57588, 57655, 57657, 57660, 57789, 57918, 57919, 58048, 58177, 58306, 58435, 58564, 58693, 58694, 58696, 58697, 58826, 58955, 59084, 59213, 59342, 59471, 59600, 59729, 59858, 59987, 60116, 60245, 60374, 60503, 60632, 60761, 60890, 61019, 61148, 61277, 61406, 61535, 61664, 61793, 61922, 62051, 62180, 62309, 62438, 62567, 62696, 62825, 62954, 63083, 63212, 63341, 63470, 63555, 63684, 63813, 63942, 64071, 64200, 64329, 64458, 64587, 64716, 64845, 64974, 65103, 65232, 65361, 65490, 65619, 65748, 65877, 66006, 66135, 66264, 66393, 66522, 66651, 66780, 66909, 67038, 67167, 67296, 67425, 67554, 67683, 67812, 67941, 68070, 68199, 68328, 68457, 68586, 68715, 68844, 68973, 69102, 69231, 69360, 69489, 69618, 69747, 69876, 70005, 70134, 70263, 70392, 70521, 70650, 70779, 70908, 71037, 71166, 71295, 71424, 71553, 71682, 71811, 71940, 71941, 72006, 72007, 72046, 72085, 72087, 72140, 72142, 72235, 72337, 72429 ] class << self attr_accessor :_lex_indicies private :_lex_indicies, :_lex_indicies= end self._lex_indicies = [ 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 21, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 34, 31, 31, 31, 31, 31, 31, 35, 31, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 37, 18, 18, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 43, 45, 43, 45, 45, 43, 43, 45, 45, 45, 46, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 45, 43, 43, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 45, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 50, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 52, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 61, 50, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 66, 62, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 67, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68, 49, 68, 49, 49, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 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, 76, 76, 74, 76, 74, 76, 76, 74, 74, 76, 76, 76, 77, 76, 76, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 76, 74, 74, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 76, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 76, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 74, 74, 74, 76, 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, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 79, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 75, 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, 82, 82, 80, 82, 80, 82, 82, 80, 80, 82, 82, 82, 83, 82, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 82, 82, 82, 82, 82, 82, 82, 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, 82, 80, 80, 81, 82, 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, 82, 80, 81, 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, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 80, 80, 80, 80, 80, 80, 80, 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, 80, 80, 80, 80, 82, 80, 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, 80, 80, 80, 80, 80, 82, 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, 85, 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, 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, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 88, 87, 88, 87, 87, 88, 88, 87, 87, 87, 89, 87, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 87, 87, 87, 87, 87, 87, 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, 87, 88, 88, 86, 87, 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, 88, 88, 87, 88, 86, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 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, 88, 88, 88, 88, 87, 88, 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, 88, 88, 88, 88, 88, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 88, 92, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 91, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 91, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 88, 88, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 93, 88, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 88, 88, 88, 88, 88, 93, 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, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 95, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 95, 96, 97, 97, 97, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 101, 98, 98, 98, 98, 100, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 99, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 99, 101, 98, 98, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 105, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 103, 103, 103, 103, 105, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 103, 103, 103, 103, 104, 103, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 103, 103, 103, 103, 103, 104, 106, 103, 108, 107, 109, 107, 110, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 112, 107, 112, 112, 112, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 112, 107, 107, 107, 107, 113, 114, 107, 115, 107, 116, 117, 118, 119, 120, 113, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 121, 107, 122, 118, 123, 124, 107, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 125, 126, 118, 127, 111, 107, 111, 111, 111, 111, 111, 111, 111, 111, 128, 111, 111, 111, 111, 111, 111, 111, 111, 129, 111, 111, 130, 111, 131, 111, 111, 111, 132, 133, 107, 127, 107, 111, 107, 107, 107, 107, 107, 107, 107, 107, 107, 134, 107, 134, 134, 134, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 134, 107, 107, 107, 107, 135, 136, 107, 137, 107, 138, 139, 140, 141, 142, 135, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 143, 107, 144, 140, 145, 146, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 147, 148, 140, 109, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 149, 104, 104, 104, 104, 104, 104, 104, 104, 150, 104, 104, 151, 104, 152, 104, 104, 104, 153, 154, 107, 109, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 156, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 157, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 158, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 159, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 160, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 161, 104, 104, 104, 104, 104, 104, 104, 162, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 163, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 164, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 165, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 155, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 166, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 167, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 105, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 107, 107, 107, 107, 105, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 104, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 159, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 107, 107, 107, 107, 107, 104, 169, 168, 170, 168, 171, 168, 140, 168, 172, 168, 168, 168, 168, 168, 168, 168, 173, 168, 174, 168, 175, 168, 140, 168, 176, 168, 140, 168, 177, 168, 171, 168, 179, 178, 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, 180, 182, 182, 182, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, 180, 180, 180, 180, 180, 180, 180, 183, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 184, 180, 180, 181, 180, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 180, 180, 180, 180, 181, 186, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 188, 180, 188, 188, 188, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 188, 180, 180, 180, 180, 180, 180, 180, 189, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 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, 180, 190, 180, 180, 187, 180, 187, 187, 187, 191, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 180, 180, 180, 180, 180, 187, 193, 192, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, 192, 192, 192, 192, 192, 192, 192, 194, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 195, 192, 196, 192, 197, 192, 197, 197, 197, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 197, 192, 192, 192, 192, 192, 192, 192, 198, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 199, 192, 200, 201, 203, 202, 204, 202, 205, 202, 206, 202, 207, 202, 208, 209, 209, 209, 208, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 208, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 209, 211, 200, 212, 213, 212, 212, 212, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 212, 200, 200, 214, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 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, 216, 200, 217, 218, 217, 217, 217, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 217, 200, 200, 219, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 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, 221, 200, 223, 224, 223, 223, 223, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 222, 222, 225, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 227, 222, 229, 230, 229, 229, 229, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 229, 228, 228, 231, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 233, 228, 229, 234, 229, 229, 229, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 229, 228, 228, 231, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 233, 228, 213, 200, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 237, 237, 235, 237, 235, 237, 237, 235, 235, 237, 237, 237, 238, 237, 237, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 237, 237, 237, 237, 237, 237, 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, 235, 237, 235, 235, 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, 235, 235, 235, 237, 235, 236, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 235, 235, 235, 235, 235, 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 235, 235, 235, 237, 235, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 235, 235, 235, 235, 235, 237, 240, 237, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 237, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 241, 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, 235, 235, 235, 235, 236, 235, 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, 235, 235, 235, 235, 235, 236, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 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, 235, 235, 235, 235, 236, 235, 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, 235, 235, 235, 235, 235, 236, 240, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 243, 235, 235, 235, 235, 244, 235, 235, 235, 235, 235, 245, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 211, 235, 235, 235, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 235, 235, 235, 235, 242, 246, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 235, 235, 235, 245, 235, 242, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 248, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 247, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 247, 251, 250, 252, 243, 249, 248, 252, 244, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 243, 235, 235, 235, 235, 244, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 235, 235, 235, 235, 242, 246, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 235, 235, 235, 235, 235, 242, 252, 246, 253, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 254, 253, 256, 256, 256, 253, 256, 256, 256, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 253, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 258, 256, 253, 256, 256, 256, 253, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 253, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 259, 256, 253, 260, 260, 260, 253, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 253, 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, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 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, 260, 260, 262, 260, 253, 263, 263, 263, 253, 263, 263, 263, 263, 263, 264, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 253, 263, 253, 263, 263, 263, 253, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 253, 263, 253, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 265, 254, 253, 266, 266, 266, 253, 266, 266, 266, 266, 266, 267, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 253, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 268, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 269, 266, 266, 266, 266, 266, 266, 270, 266, 253, 266, 266, 266, 253, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 253, 266, 271, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 272, 253, 272, 253, 253, 273, 273, 273, 253, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 253, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 275, 273, 253, 256, 256, 256, 253, 256, 256, 256, 256, 256, 257, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 253, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 259, 256, 253, 276, 276, 276, 253, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 253, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 276, 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, 279, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 200, 200, 281, 200, 279, 200, 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, 200, 200, 200, 200, 278, 200, 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, 200, 200, 200, 200, 200, 278, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 279, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 235, 235, 281, 235, 279, 235, 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, 235, 235, 235, 235, 278, 235, 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, 235, 235, 235, 235, 235, 278, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 279, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 235, 235, 281, 235, 279, 235, 278, 278, 278, 278, 278, 278, 278, 278, 283, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 235, 235, 235, 235, 278, 235, 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, 235, 235, 235, 235, 235, 278, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 279, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 235, 235, 281, 235, 279, 235, 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, 235, 235, 235, 235, 278, 235, 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, 235, 235, 235, 235, 235, 278, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 279, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 235, 235, 281, 235, 279, 235, 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, 235, 235, 235, 235, 278, 235, 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, 235, 235, 235, 235, 235, 278, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 287, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 288, 285, 285, 285, 285, 287, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 285, 285, 285, 285, 286, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 285, 285, 285, 285, 285, 286, 288, 285, 285, 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 290, 290, 290, 290, 290, 290, 290, 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, 290, 290, 290, 290, 291, 290, 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, 290, 290, 290, 290, 290, 291, 293, 292, 293, 292, 292, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 292, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 292, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 292, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 296, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 296, 300, 299, 301, 299, 302, 299, 303, 299, 305, 304, 306, 304, 307, 304, 308, 304, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 290, 290, 290, 290, 290, 290, 290, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 290, 290, 290, 290, 309, 290, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 290, 290, 290, 290, 290, 309, 310, 296, 311, 312, 311, 311, 311, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 311, 296, 296, 313, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 314, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 315, 296, 316, 317, 316, 316, 316, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 316, 296, 296, 318, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 319, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 320, 296, 322, 323, 322, 322, 322, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 322, 321, 321, 324, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 325, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 326, 321, 328, 329, 328, 328, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 330, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 331, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 332, 327, 328, 329, 328, 328, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 330, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 333, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 332, 327, 328, 334, 328, 328, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 330, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 331, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 332, 327, 335, 296, 312, 296, 337, 336, 337, 337, 337, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 336, 336, 336, 336, 336, 338, 336, 336, 336, 336, 336, 336, 336, 339, 336, 340, 336, 342, 341, 341, 341, 342, 341, 341, 341, 341, 343, 344, 343, 343, 343, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 342, 341, 341, 341, 341, 341, 343, 341, 341, 345, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 346, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 347, 341, 341, 348, 341, 343, 349, 343, 343, 343, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 343, 349, 350, 351, 352, 353, 354, 356, 355, 358, 359, 358, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 358, 357, 344, 355, 360, 355, 362, 361, 361, 361, 362, 361, 361, 361, 361, 363, 364, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 362, 361, 361, 361, 361, 361, 363, 361, 361, 365, 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, 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, 361, 361, 361, 361, 366, 361, 363, 367, 363, 363, 363, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 363, 367, 369, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 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, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 371, 368, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 372, 372, 372, 372, 372, 372, 372, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 372, 372, 372, 372, 13, 372, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 372, 372, 372, 372, 372, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 372, 375, 374, 374, 374, 375, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 376, 376, 376, 376, 376, 376, 376, 376, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 377, 374, 374, 374, 374, 374, 374, 374, 374, 374, 378, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 379, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 380, 374, 374, 381, 374, 382, 383, 385, 385, 385, 385, 385, 385, 385, 385, 384, 386, 386, 386, 386, 386, 386, 386, 386, 384, 384, 387, 387, 38, 38, 38, 387, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 387, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 388, 38, 389, 390, 391, 391, 38, 38, 38, 391, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 391, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 392, 38, 37, 391, 393, 394, 395, 395, 25, 25, 25, 395, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 395, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 396, 25, 391, 19, 19, 19, 391, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 391, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 397, 19, 387, 25, 25, 25, 387, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 387, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 387, 398, 398, 398, 387, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 387, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 399, 398, 400, 401, 401, 398, 398, 398, 401, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 401, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 402, 398, 401, 19, 19, 19, 401, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 401, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 397, 19, 403, 401, 401, 25, 25, 25, 401, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 401, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, 404, 404, 404, 404, 404, 404, 404, 405, 405, 405, 405, 405, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 405, 405, 405, 405, 405, 405, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 406, 404, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 404, 404, 404, 404, 404, 404, 404, 407, 407, 407, 407, 407, 407, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 407, 407, 407, 407, 407, 407, 404, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 404, 404, 404, 404, 404, 404, 404, 408, 408, 408, 408, 408, 408, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 408, 408, 408, 408, 408, 408, 404, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 404, 404, 404, 404, 404, 404, 404, 409, 409, 409, 409, 409, 409, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 409, 409, 409, 409, 409, 409, 404, 410, 413, 412, 412, 412, 413, 412, 412, 412, 412, 414, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 413, 412, 412, 412, 412, 412, 414, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 412, 412, 412, 412, 412, 412, 412, 415, 415, 415, 415, 415, 415, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 415, 415, 415, 415, 415, 415, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 416, 412, 413, 412, 412, 412, 413, 412, 412, 412, 412, 411, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 413, 412, 412, 412, 412, 412, 411, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 412, 412, 412, 412, 412, 412, 412, 417, 417, 417, 417, 417, 417, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 417, 417, 417, 417, 417, 417, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 412, 418, 412, 411, 413, 417, 417, 417, 413, 417, 417, 417, 417, 411, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 413, 417, 417, 417, 417, 417, 411, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 411, 417, 419, 413, 420, 420, 420, 413, 420, 420, 420, 420, 414, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 414, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 411, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 411, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 411, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 417, 417, 417, 417, 417, 417, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 420, 420, 420, 420, 420, 420, 420, 422, 422, 422, 422, 422, 422, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 422, 422, 422, 422, 422, 422, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 415, 415, 415, 415, 415, 415, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 424, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 425, 425, 425, 425, 425, 425, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, 420, 420, 420, 420, 420, 420, 420, 426, 426, 426, 426, 426, 426, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 426, 426, 426, 426, 426, 426, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, 420, 420, 420, 420, 420, 420, 420, 427, 427, 427, 427, 427, 427, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 427, 427, 427, 427, 427, 427, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 420, 420, 420, 420, 420, 420, 420, 428, 428, 428, 428, 428, 428, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 428, 428, 428, 428, 428, 428, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 421, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 423, 420, 413, 420, 420, 420, 413, 420, 420, 420, 420, 411, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 413, 420, 420, 420, 420, 420, 411, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 429, 429, 429, 429, 429, 429, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 411, 420, 430, 431, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, 433, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, 433, 432, 432, 435, 434, 434, 434, 435, 434, 434, 434, 434, 434, 436, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 435, 434, 434, 434, 434, 434, 434, 434, 434, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 438, 434, 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, 439, 441, 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, 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, 439, 439, 439, 439, 439, 439, 442, 439, 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, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 443, 443, 443, 443, 443, 443, 443, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 443, 443, 443, 443, 44, 443, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 443, 443, 443, 443, 443, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 443, 446, 445, 445, 445, 446, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 446, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 447, 447, 447, 447, 447, 447, 447, 447, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 448, 445, 445, 445, 445, 445, 445, 445, 445, 445, 449, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 450, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 451, 445, 445, 452, 445, 453, 454, 456, 456, 456, 456, 456, 456, 456, 456, 455, 457, 457, 457, 457, 457, 457, 457, 457, 455, 455, 458, 458, 69, 69, 69, 458, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 458, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 459, 69, 460, 461, 462, 462, 69, 69, 69, 462, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 462, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 463, 69, 68, 462, 464, 465, 466, 466, 56, 56, 56, 466, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 466, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 467, 56, 462, 50, 50, 50, 462, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 462, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 468, 50, 458, 56, 56, 56, 458, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 458, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 458, 469, 469, 469, 458, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 458, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 470, 469, 471, 472, 472, 469, 469, 469, 472, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 472, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 473, 469, 472, 50, 50, 50, 472, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 472, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 468, 50, 474, 472, 472, 56, 56, 56, 472, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 472, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 475, 475, 475, 475, 475, 475, 475, 476, 476, 476, 476, 476, 476, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, 476, 476, 476, 476, 476, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 477, 475, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 475, 475, 475, 475, 475, 475, 475, 478, 478, 478, 478, 478, 478, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 478, 478, 478, 478, 478, 478, 475, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 475, 475, 475, 475, 475, 475, 475, 479, 479, 479, 479, 479, 479, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 479, 479, 479, 479, 479, 479, 475, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 475, 475, 475, 475, 475, 475, 475, 480, 480, 480, 480, 480, 480, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 480, 480, 480, 480, 480, 480, 475, 481, 484, 483, 483, 483, 484, 483, 483, 483, 483, 485, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 484, 483, 483, 483, 483, 483, 485, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 483, 483, 483, 483, 483, 483, 483, 486, 486, 486, 486, 486, 486, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 486, 486, 486, 486, 486, 486, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 487, 483, 484, 483, 483, 483, 484, 483, 483, 483, 483, 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 484, 483, 483, 483, 483, 483, 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 483, 483, 483, 483, 483, 483, 483, 488, 488, 488, 488, 488, 488, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 488, 488, 488, 488, 488, 488, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 489, 483, 482, 484, 488, 488, 488, 484, 488, 488, 488, 488, 482, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 484, 488, 488, 488, 488, 488, 482, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 482, 488, 490, 484, 491, 491, 491, 484, 491, 491, 491, 491, 485, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 485, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 482, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 482, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 482, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 488, 488, 488, 488, 488, 488, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 491, 491, 491, 491, 491, 491, 491, 493, 493, 493, 493, 493, 493, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 493, 493, 493, 493, 493, 493, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 486, 486, 486, 486, 486, 486, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 495, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 496, 496, 496, 496, 496, 496, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 491, 491, 491, 491, 491, 491, 491, 497, 497, 497, 497, 497, 497, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 497, 497, 497, 497, 497, 497, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 491, 491, 491, 491, 491, 491, 491, 498, 498, 498, 498, 498, 498, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 498, 498, 498, 498, 498, 498, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 491, 491, 491, 491, 491, 491, 491, 499, 499, 499, 499, 499, 499, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 499, 499, 499, 499, 499, 499, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 494, 491, 484, 491, 491, 491, 484, 491, 491, 491, 491, 482, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 484, 491, 491, 491, 491, 491, 482, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 500, 500, 500, 500, 500, 500, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 482, 491, 501, 502, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 503, 503, 503, 503, 503, 503, 503, 504, 504, 504, 504, 504, 504, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 504, 504, 504, 504, 504, 504, 503, 503, 506, 505, 505, 505, 506, 505, 505, 505, 505, 507, 508, 507, 507, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 506, 505, 505, 505, 505, 505, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 509, 505, 507, 510, 507, 507, 507, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 507, 510, 511, 512, 512, 512, 511, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 511, 512, 514, 513, 513, 513, 514, 513, 513, 513, 513, 513, 515, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 514, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 516, 513, 517, 518, 518, 518, 517, 518, 518, 518, 518, 518, 519, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 517, 518, 521, 520, 520, 520, 521, 520, 520, 520, 520, 520, 522, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 520, 520, 520, 520, 520, 520, 520, 520, 523, 520, 525, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 526, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, 527, 524, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 528, 528, 528, 528, 528, 528, 528, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 528, 528, 528, 528, 75, 528, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 528, 528, 528, 528, 528, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 528, 530, 529, 529, 529, 530, 529, 529, 529, 529, 529, 531, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, 529, 533, 532, 532, 532, 533, 532, 532, 532, 532, 534, 535, 534, 534, 534, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 532, 532, 532, 532, 532, 534, 532, 532, 536, 532, 534, 537, 534, 534, 534, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 534, 537, 539, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 540, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 541, 538, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 542, 542, 542, 542, 542, 542, 542, 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, 542, 542, 542, 542, 81, 542, 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, 542, 542, 542, 542, 542, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 542, 544, 543, 543, 543, 544, 543, 543, 543, 543, 545, 546, 545, 545, 545, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 544, 543, 543, 543, 543, 543, 545, 543, 545, 547, 545, 545, 545, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 545, 547, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 548, 548, 548, 548, 548, 548, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 548, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 550, 550, 550, 550, 550, 550, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 550, 551, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 552, 88, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 553, 553, 553, 553, 553, 553, 553, 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, 553, 553, 553, 553, 86, 553, 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, 553, 553, 553, 553, 553, 86, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 553, 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, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 554, 554, 554, 554, 554, 554, 554, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 554, 554, 554, 554, 91, 554, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 554, 554, 554, 554, 554, 91, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 555, 555, 555, 555, 555, 555, 555, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 555, 555, 555, 555, 93, 555, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 555, 555, 555, 555, 555, 93, 557, 558, 558, 558, 557, 558, 558, 558, 558, 559, 560, 559, 559, 559, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 557, 558, 558, 558, 558, 558, 559, 561, 558, 562, 563, 564, 565, 558, 558, 558, 566, 567, 558, 567, 558, 568, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 569, 558, 570, 571, 572, 558, 558, 573, 574, 573, 573, 575, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 576, 577, 558, 568, 578, 568, 579, 580, 581, 582, 583, 584, 556, 556, 585, 556, 556, 556, 586, 587, 588, 556, 556, 589, 590, 591, 592, 556, 593, 556, 594, 556, 558, 595, 558, 567, 558, 556, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 596, 596, 596, 597, 596, 597, 596, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 596, 596, 596, 596, 556, 596, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 596, 596, 596, 596, 596, 556, 559, 598, 559, 559, 559, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 559, 598, 599, 568, 600, 600, 568, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 568, 600, 601, 602, 603, 604, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 95, 95, 605, 95, 605, 95, 95, 605, 605, 95, 95, 95, 607, 95, 95, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 95, 95, 95, 95, 95, 95, 95, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 605, 95, 605, 605, 606, 95, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 605, 605, 605, 95, 605, 606, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 609, 609, 609, 609, 609, 609, 609, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 609, 609, 609, 609, 606, 609, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 609, 609, 609, 609, 609, 606, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, 610, 600, 568, 600, 568, 600, 568, 600, 612, 611, 568, 613, 600, 568, 600, 614, 568, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 568, 605, 568, 600, 568, 568, 600, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 596, 596, 596, 597, 596, 597, 596, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 596, 596, 596, 596, 573, 596, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 596, 596, 596, 596, 596, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 573, 616, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 573, 573, 573, 617, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 573, 573, 573, 573, 573, 618, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 619, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 620, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 597, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 597, 615, 597, 615, 573, 573, 573, 619, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 573, 615, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 615, 615, 615, 615, 615, 573, 614, 605, 560, 605, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 622, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 623, 624, 556, 556, 556, 556, 556, 625, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 626, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 627, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 628, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 629, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 630, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 631, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 632, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 633, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 634, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 635, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 636, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 632, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 637, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 636, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 638, 556, 639, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 640, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 641, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 642, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 643, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 644, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 645, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 646, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 647, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 648, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 649, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 650, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 651, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 641, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 652, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 653, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 597, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 654, 654, 654, 597, 654, 597, 654, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 654, 654, 654, 654, 556, 654, 556, 556, 556, 556, 556, 556, 556, 556, 655, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 654, 654, 654, 654, 654, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 656, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 657, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 658, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 659, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 660, 556, 661, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 662, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 634, 556, 556, 556, 663, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 664, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 665, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 650, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 666, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 588, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 648, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 667, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 668, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 669, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 650, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 670, 556, 556, 556, 671, 556, 556, 556, 556, 556, 672, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 672, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 673, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 674, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 675, 676, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 677, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 650, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 678, 556, 556, 679, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 634, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 645, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 680, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 681, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 663, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 682, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 588, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 683, 556, 556, 556, 556, 556, 556, 556, 556, 556, 677, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 645, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 684, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 685, 556, 556, 556, 556, 556, 556, 556, 686, 556, 556, 556, 556, 556, 556, 556, 687, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 663, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 651, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 671, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 688, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 645, 556, 556, 556, 669, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 689, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 690, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 597, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 597, 621, 597, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 556, 621, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 639, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 621, 621, 621, 621, 621, 556, 568, 600, 692, 693, 693, 693, 692, 693, 693, 693, 693, 694, 693, 694, 694, 694, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 692, 693, 693, 693, 693, 693, 694, 693, 693, 695, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 693, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 693, 696, 693, 693, 691, 693, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 693, 693, 693, 693, 693, 691, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 100, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 697, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 101, 697, 697, 697, 697, 100, 697, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 697, 697, 697, 697, 99, 697, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 697, 697, 697, 697, 697, 99, 694, 698, 694, 694, 694, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 694, 698, 699, 700, 701, 702, 703, 697, 704, 706, 707, 707, 707, 706, 707, 707, 707, 707, 708, 709, 708, 708, 708, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 706, 707, 707, 707, 707, 707, 708, 710, 707, 711, 707, 712, 713, 707, 707, 707, 714, 715, 707, 715, 707, 712, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 716, 717, 718, 707, 707, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 720, 721, 707, 712, 705, 712, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 707, 722, 707, 715, 707, 705, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 724, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 723, 723, 723, 723, 723, 724, 723, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 723, 723, 723, 723, 705, 723, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 723, 723, 723, 723, 723, 705, 726, 725, 727, 708, 728, 708, 708, 708, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, 708, 728, 729, 712, 730, 730, 712, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, 712, 730, 731, 732, 733, 734, 712, 730, 712, 730, 712, 730, 712, 735, 730, 712, 730, 737, 712, 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, 736, 736, 736, 736, 736, 736, 736, 712, 736, 712, 730, 712, 712, 730, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 724, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 738, 738, 738, 738, 738, 724, 738, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 738, 738, 738, 738, 719, 738, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, 738, 738, 738, 738, 738, 719, 737, 736, 709, 736, 712, 730, 740, 739, 739, 739, 740, 739, 739, 739, 739, 741, 742, 741, 741, 741, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 740, 739, 739, 739, 739, 739, 741, 739, 739, 743, 739, 109, 744, 739, 745, 739, 746, 109, 140, 747, 142, 109, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 748, 739, 749, 140, 750, 751, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 140, 752, 140, 109, 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, 753, 739, 739, 739, 739, 739, 739, 739, 739, 754, 739, 739, 755, 739, 756, 739, 739, 739, 153, 154, 739, 109, 739, 757, 757, 757, 757, 757, 757, 757, 757, 757, 741, 757, 741, 741, 741, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 741, 757, 757, 757, 757, 135, 136, 757, 137, 757, 138, 139, 140, 141, 142, 135, 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, 143, 757, 144, 140, 145, 146, 757, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 147, 148, 140, 109, 104, 757, 104, 104, 104, 104, 104, 104, 104, 104, 149, 104, 104, 104, 104, 104, 104, 104, 104, 150, 104, 104, 151, 104, 152, 104, 104, 104, 153, 154, 757, 109, 757, 104, 758, 759, 759, 759, 758, 759, 759, 759, 759, 140, 760, 140, 140, 140, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 758, 759, 759, 759, 759, 759, 140, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, 140, 759, 140, 760, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 109, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 140, 760, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 761, 140, 760, 140, 140, 140, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 140, 762, 762, 762, 762, 762, 762, 762, 762, 762, 763, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 140, 762, 140, 760, 140, 140, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 140, 140, 103, 764, 758, 140, 758, 766, 765, 768, 769, 768, 768, 768, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 768, 767, 770, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 105, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 106, 758, 758, 758, 758, 105, 758, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 758, 758, 758, 758, 104, 758, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 758, 758, 758, 758, 758, 104, 771, 140, 760, 140, 140, 140, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 140, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 140, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 109, 758, 772, 773, 774, 775, 776, 777, 140, 760, 140, 140, 140, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 140, 758, 758, 758, 758, 758, 758, 758, 758, 758, 109, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 140, 758, 140, 765, 109, 778, 109, 778, 779, 780, 779, 779, 779, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 779, 767, 781, 778, 782, 782, 782, 782, 782, 782, 782, 782, 782, 112, 782, 112, 112, 112, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 112, 782, 782, 782, 782, 113, 114, 782, 115, 782, 116, 117, 118, 119, 120, 113, 782, 782, 782, 782, 782, 782, 782, 782, 782, 782, 121, 782, 122, 118, 123, 124, 782, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 125, 126, 118, 127, 111, 782, 111, 111, 111, 111, 111, 111, 111, 111, 128, 111, 111, 111, 111, 111, 111, 111, 111, 129, 111, 111, 130, 111, 131, 111, 111, 111, 132, 133, 782, 127, 782, 111, 140, 778, 783, 778, 784, 778, 785, 778, 786, 179, 179, 179, 786, 179, 179, 179, 179, 787, 179, 787, 787, 787, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 786, 179, 179, 179, 179, 179, 787, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 788, 179, 179, 181, 179, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 179, 179, 179, 179, 181, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 789, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 178, 178, 178, 178, 789, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 178, 178, 178, 178, 181, 178, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 178, 178, 178, 178, 178, 181, 790, 790, 790, 790, 790, 790, 790, 790, 790, 182, 790, 182, 182, 182, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 182, 790, 790, 790, 790, 790, 790, 790, 183, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 790, 184, 790, 790, 181, 790, 181, 181, 181, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 790, 790, 790, 790, 790, 181, 791, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 789, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 179, 790, 790, 790, 790, 789, 790, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 790, 790, 790, 790, 181, 790, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 792, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 790, 790, 790, 790, 790, 181, 186, 790, 794, 793, 793, 793, 794, 793, 793, 793, 793, 795, 793, 795, 795, 795, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 794, 793, 793, 793, 793, 793, 795, 793, 793, 796, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 797, 793, 793, 793, 793, 793, 793, 793, 798, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, 799, 793, 795, 800, 795, 795, 795, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 795, 800, 801, 802, 803, 804, 806, 805, 807, 808, 805, 809, 811, 812, 812, 812, 811, 812, 812, 812, 812, 813, 814, 813, 813, 813, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 811, 812, 812, 812, 812, 812, 813, 812, 812, 815, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 812, 816, 812, 812, 810, 812, 810, 810, 810, 810, 810, 810, 810, 810, 817, 810, 810, 810, 810, 810, 810, 810, 810, 818, 810, 810, 819, 810, 820, 810, 810, 810, 812, 812, 812, 812, 812, 810, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 821, 821, 821, 821, 821, 821, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 821, 821, 821, 821, 810, 821, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 821, 821, 821, 821, 821, 810, 813, 822, 813, 813, 813, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, 813, 822, 823, 824, 825, 826, 827, 829, 828, 830, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 832, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 833, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 834, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 835, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 836, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 832, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 837, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 838, 810, 810, 810, 810, 810, 810, 810, 839, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 840, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 841, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 832, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 842, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 832, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 843, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 844, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 831, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 810, 831, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 836, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 831, 831, 831, 831, 831, 810, 846, 211, 211, 211, 846, 211, 211, 211, 211, 847, 848, 847, 847, 847, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 846, 211, 211, 211, 211, 211, 847, 849, 211, 850, 211, 851, 852, 211, 853, 211, 854, 855, 211, 856, 857, 858, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 859, 211, 860, 861, 862, 863, 211, 864, 865, 864, 864, 866, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 867, 868, 211, 869, 870, 211, 871, 872, 873, 874, 875, 876, 845, 845, 877, 845, 845, 845, 878, 879, 880, 845, 845, 881, 882, 883, 884, 845, 885, 845, 886, 845, 887, 888, 211, 869, 211, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 893, 892, 892, 894, 892, 895, 897, 898, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 899, 896, 901, 900, 902, 903, 904, 847, 905, 847, 847, 847, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 847, 905, 907, 906, 909, 910, 909, 909, 909, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 909, 908, 211, 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, 211, 911, 912, 913, 914, 915, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 917, 917, 917, 917, 917, 917, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 918, 917, 919, 209, 209, 209, 919, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 919, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 209, 921, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 211, 920, 922, 924, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 211, 923, 211, 200, 212, 213, 212, 212, 212, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 212, 920, 920, 214, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 920, 920, 920, 211, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 216, 920, 229, 230, 229, 229, 229, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 229, 228, 228, 231, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 233, 228, 212, 213, 212, 212, 212, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 212, 920, 920, 214, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 920, 920, 920, 211, 211, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, 216, 920, 926, 911, 211, 911, 911, 927, 927, 927, 911, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 911, 927, 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, 929, 930, 911, 931, 237, 932, 930, 911, 911, 933, 934, 911, 934, 911, 237, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 935, 911, 936, 937, 938, 911, 939, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 940, 911, 911, 237, 928, 237, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 911, 941, 911, 942, 911, 928, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 944, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 943, 943, 943, 945, 943, 944, 943, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 943, 943, 943, 943, 928, 943, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 928, 943, 943, 943, 943, 943, 928, 947, 946, 948, 950, 951, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 954, 955, 953, 956, 957, 958, 959, 237, 943, 943, 960, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 237, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 943, 943, 943, 943, 943, 943, 943, 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, 943, 943, 943, 943, 236, 943, 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, 943, 943, 943, 943, 943, 236, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 943, 961, 943, 237, 943, 237, 943, 237, 962, 943, 237, 943, 237, 943, 237, 237, 943, 961, 943, 960, 943, 963, 964, 911, 965, 211, 911, 869, 211, 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, 211, 911, 211, 921, 911, 968, 967, 967, 967, 968, 967, 967, 967, 967, 969, 970, 969, 969, 969, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 968, 967, 967, 967, 967, 967, 969, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 967, 972, 967, 967, 971, 967, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 967, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 973, 973, 973, 973, 974, 973, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 973, 973, 973, 973, 973, 974, 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, 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, 976, 976, 976, 976, 975, 975, 975, 975, 975, 975, 975, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 976, 975, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 975, 976, 979, 978, 978, 978, 979, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 979, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 980, 980, 980, 980, 980, 980, 980, 980, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 981, 978, 978, 978, 978, 978, 978, 978, 978, 978, 982, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 983, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, 984, 978, 978, 985, 978, 986, 987, 989, 989, 989, 989, 989, 989, 989, 989, 988, 990, 990, 990, 990, 990, 990, 990, 990, 988, 988, 991, 991, 273, 273, 273, 991, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 991, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 992, 273, 993, 994, 995, 995, 273, 273, 273, 995, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 995, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 996, 273, 272, 995, 997, 998, 999, 999, 260, 260, 260, 999, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 999, 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, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 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, 260, 260, 1000, 260, 995, 254, 254, 254, 995, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 995, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1001, 254, 991, 260, 260, 260, 991, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 991, 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, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 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, 260, 260, 262, 260, 991, 1002, 1002, 1002, 991, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 991, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1002, 1004, 1005, 1005, 1002, 1002, 1002, 1005, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1005, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1006, 1002, 1005, 254, 254, 254, 1005, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1005, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1001, 254, 1007, 1005, 1005, 260, 260, 260, 1005, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1005, 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, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 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, 260, 260, 262, 260, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1010, 1008, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1011, 1011, 1011, 1011, 1011, 1011, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1011, 1011, 1011, 1011, 1011, 1011, 1008, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1012, 1012, 1012, 1012, 1012, 1012, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1012, 1012, 1012, 1012, 1012, 1012, 1008, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1013, 1013, 1013, 1013, 1013, 1013, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1013, 1013, 1013, 1013, 1013, 1013, 1008, 1014, 1017, 1016, 1016, 1016, 1017, 1016, 1016, 1016, 1016, 1018, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017, 1016, 1016, 1016, 1016, 1016, 1018, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1019, 1019, 1019, 1019, 1019, 1019, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1019, 1019, 1019, 1019, 1019, 1019, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1020, 1016, 1017, 1016, 1016, 1016, 1017, 1016, 1016, 1016, 1016, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017, 1016, 1016, 1016, 1016, 1016, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1021, 1021, 1021, 1021, 1021, 1021, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1021, 1021, 1021, 1021, 1021, 1021, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1022, 1016, 1015, 1017, 1021, 1021, 1021, 1017, 1021, 1021, 1021, 1021, 1015, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1017, 1021, 1021, 1021, 1021, 1021, 1015, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1015, 1021, 1023, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1018, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1018, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1015, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1021, 1021, 1021, 1021, 1021, 1021, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1021, 1021, 1021, 1021, 1021, 1021, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1027, 1027, 1027, 1027, 1027, 1027, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1027, 1027, 1027, 1027, 1027, 1027, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1029, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1030, 1030, 1030, 1030, 1030, 1030, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1030, 1030, 1030, 1030, 1030, 1030, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1031, 1031, 1031, 1031, 1031, 1031, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1031, 1031, 1031, 1031, 1031, 1031, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1032, 1032, 1032, 1032, 1032, 1032, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1032, 1032, 1032, 1032, 1032, 1032, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1033, 1033, 1033, 1033, 1033, 1033, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1033, 1033, 1033, 1033, 1033, 1033, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1026, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1015, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1036, 1036, 1036, 1036, 1036, 1036, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1036, 1036, 1036, 1036, 1036, 1036, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1037, 1037, 1037, 1037, 1037, 1037, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1037, 1037, 1037, 1037, 1037, 1037, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1038, 1038, 1038, 1038, 1038, 1038, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1038, 1038, 1038, 1038, 1038, 1038, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1039, 1039, 1039, 1039, 1039, 1039, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1039, 1039, 1039, 1039, 1039, 1039, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1040, 1040, 1040, 1040, 1040, 1040, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1040, 1040, 1040, 1040, 1040, 1040, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1041, 1041, 1041, 1041, 1041, 1041, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1041, 1041, 1041, 1041, 1041, 1041, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1042, 1042, 1042, 1042, 1042, 1042, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1042, 1042, 1042, 1042, 1042, 1042, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1015, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1043, 1043, 1043, 1043, 1043, 1043, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1043, 1043, 1043, 1043, 1043, 1043, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1044, 1044, 1044, 1044, 1044, 1044, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1044, 1044, 1044, 1044, 1044, 1044, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1045, 1045, 1045, 1045, 1045, 1045, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1045, 1045, 1045, 1045, 1045, 1045, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1046, 1046, 1046, 1046, 1046, 1046, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1046, 1046, 1046, 1046, 1046, 1046, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1017, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1017, 1024, 1024, 1024, 1024, 1024, 1035, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1034, 1034, 1034, 1034, 1034, 1034, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1028, 1024, 1047, 1048, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1049, 1049, 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, 279, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 200, 200, 281, 200, 279, 200, 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, 200, 200, 200, 200, 278, 200, 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, 200, 200, 200, 200, 200, 278, 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, 279, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 911, 911, 281, 911, 279, 911, 278, 278, 278, 278, 1051, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 911, 911, 911, 911, 278, 911, 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, 911, 911, 911, 911, 911, 278, 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, 279, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 280, 911, 911, 281, 911, 279, 911, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 1052, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 911, 911, 911, 911, 278, 911, 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, 911, 911, 911, 911, 911, 278, 1053, 1054, 911, 906, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 1055, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 1056, 1057, 845, 845, 845, 845, 845, 1058, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1059, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 1060, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1061, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 1062, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1063, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1064, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 1065, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 1066, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 1067, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 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, 279, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 200, 200, 281, 200, 279, 200, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 200, 200, 200, 200, 845, 200, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 200, 200, 200, 200, 200, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1068, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1069, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 1065, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1070, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1069, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1071, 845, 1072, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1073, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 1074, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1075, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1076, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 1077, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1078, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1079, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 1080, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 1081, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1082, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1083, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 1084, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1074, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1085, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1086, 845, 1087, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1088, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1067, 845, 845, 845, 1085, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1089, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1090, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1083, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 1091, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 880, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1081, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 1092, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1093, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 1094, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1095, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1083, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1096, 845, 845, 845, 1097, 845, 845, 845, 845, 845, 1098, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1098, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1099, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 1100, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1101, 1102, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 1103, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1104, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1105, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1108, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1109, 1106, 1106, 1110, 1106, 1108, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1106, 1106, 1106, 1106, 1107, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1106, 1106, 1106, 1106, 1106, 1107, 897, 1111, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 899, 896, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1112, 845, 845, 1113, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1067, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1078, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1114, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1115, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1085, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1116, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 880, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 1117, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1118, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1078, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1083, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1119, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 1120, 845, 845, 845, 845, 845, 845, 845, 1121, 845, 845, 845, 845, 845, 845, 845, 1122, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1085, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1123, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1124, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1092, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1125, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1092, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 1126, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1078, 845, 845, 845, 1127, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1128, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1092, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 1129, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 1130, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 889, 890, 890, 890, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 890, 279, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 280, 889, 889, 281, 889, 279, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 891, 889, 889, 845, 889, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 1072, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, 889, 889, 889, 889, 889, 845, 1131, 211, 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, 921, 911, 1133, 1132, 1132, 1132, 1133, 1132, 1132, 1132, 1132, 1134, 1135, 1134, 1134, 1134, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1133, 1132, 1132, 1132, 1132, 1132, 1134, 1132, 1132, 1136, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1137, 1132, 1134, 1138, 1134, 1134, 1134, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1134, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1144, 1146, 1148, 1149, 1149, 1149, 1148, 1149, 1149, 1149, 1149, 1150, 1151, 1150, 1150, 1150, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1148, 1149, 1149, 1149, 1149, 1149, 1150, 1149, 1152, 1153, 1149, 1149, 1149, 1152, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1149, 1154, 1149, 1149, 1147, 1149, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1149, 1149, 1149, 1149, 1149, 1147, 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, 287, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 288, 1155, 1155, 1155, 1155, 287, 1155, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 1155, 1155, 1155, 1155, 286, 1155, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 1155, 1155, 1155, 1155, 1155, 286, 1150, 1156, 1150, 1150, 1150, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1150, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1155, 1163, 1165, 1166, 1166, 1166, 1165, 1166, 1166, 1166, 1166, 1167, 1168, 1167, 1167, 1167, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1165, 1166, 1166, 1166, 1166, 1166, 1167, 1169, 1170, 1171, 1172, 1173, 1174, 1170, 1175, 1176, 1177, 1173, 1178, 1179, 1180, 1173, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1190, 1190, 1192, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1193, 1194, 1195, 1173, 1196, 1170, 1197, 1198, 1199, 1200, 1201, 1202, 1164, 1164, 1203, 1164, 1164, 1164, 1204, 1205, 1206, 1164, 1164, 1207, 1208, 1209, 1210, 1164, 1211, 1164, 1212, 1164, 1213, 1214, 1215, 1216, 1166, 1164, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1217, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 296, 296, 296, 296, 296, 1217, 296, 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, 296, 296, 296, 296, 1164, 296, 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, 296, 296, 296, 296, 296, 1164, 1219, 1218, 1220, 1167, 1221, 1167, 1167, 1167, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1167, 1221, 1222, 1224, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1224, 1223, 1225, 1226, 1227, 1228, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 291, 291, 1229, 291, 1229, 291, 291, 1229, 1229, 291, 291, 291, 1230, 291, 291, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 291, 291, 291, 291, 291, 291, 291, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1229, 291, 1229, 1229, 309, 291, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1229, 1229, 1229, 291, 1229, 309, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1232, 1232, 1232, 1232, 309, 1232, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1232, 1232, 1232, 1232, 1232, 309, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1232, 1233, 296, 1173, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1235, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1233, 1234, 1236, 1237, 1173, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1233, 1234, 1233, 1238, 1234, 1240, 1239, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1239, 1178, 1241, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1244, 1242, 1242, 1242, 1242, 1242, 1243, 1242, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 293, 1242, 1246, 1245, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1248, 1245, 1249, 1250, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1251, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1252, 1245, 1245, 1245, 1245, 1245, 1245, 1253, 1245, 1245, 1248, 1245, 1249, 1250, 1245, 1245, 1245, 1254, 1245, 1245, 1245, 1245, 1245, 1251, 1245, 1245, 1255, 1245, 1245, 1245, 1245, 1245, 1252, 1245, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1257, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1258, 1256, 1256, 1256, 1256, 1256, 1257, 1256, 1256, 1256, 1259, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1260, 1256, 1261, 296, 1261, 296, 296, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 296, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1261, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263, 1262, 1265, 1264, 1266, 1268, 1267, 1267, 1267, 1269, 1267, 1270, 1271, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1253, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1254, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1255, 1245, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1273, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1254, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1255, 1245, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1279, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1281, 1280, 1282, 1284, 1283, 1283, 1283, 1285, 1283, 1286, 1287, 1289, 1289, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1290, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1291, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1292, 1288, 1293, 1293, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1294, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1293, 1293, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1279, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1297, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1298, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1299, 1295, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1302, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1303, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1304, 1300, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1306, 1306, 1306, 1306, 1306, 1306, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1307, 1305, 1306, 1306, 1306, 1306, 1306, 1306, 1305, 1305, 1308, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1309, 1305, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1311, 1274, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1279, 1274, 1310, 1310, 1310, 1310, 1310, 1310, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1313, 1312, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1315, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1316, 1312, 1312, 1312, 1312, 1312, 1315, 1312, 1312, 1312, 1317, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1318, 1312, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1320, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1317, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1318, 1312, 1321, 1274, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1323, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1324, 1274, 1274, 1274, 1274, 1274, 1323, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1279, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1277, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1278, 1274, 1235, 1241, 1173, 1325, 1234, 1224, 1234, 1326, 1224, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1224, 1241, 1224, 1234, 1224, 1173, 1234, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1229, 1229, 1229, 1229, 1229, 1229, 1327, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1229, 1229, 1229, 1229, 309, 1229, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1229, 1229, 1229, 1229, 1229, 309, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1217, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 296, 296, 296, 296, 1217, 296, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 296, 296, 296, 296, 1190, 296, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 296, 296, 296, 296, 296, 1190, 1329, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1190, 1331, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1332, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1333, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1334, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1335, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1217, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1328, 1330, 1330, 1330, 1330, 1217, 1330, 1190, 1190, 1190, 1334, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1190, 1330, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1330, 1330, 1330, 1330, 1330, 1190, 1336, 1338, 1337, 1339, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1341, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1342, 1343, 1164, 1164, 1164, 1164, 1164, 1344, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1345, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1346, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1347, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1348, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1349, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1350, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1351, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1352, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1353, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1354, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1355, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1356, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1357, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1358, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1359, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1355, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1360, 1164, 1361, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1362, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1363, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1364, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1366, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1367, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1368, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1369, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1370, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1371, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1372, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1373, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1374, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1375, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1376, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1377, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1378, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 311, 312, 311, 311, 311, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 311, 1217, 1379, 313, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1379, 1379, 314, 1379, 1379, 1217, 1379, 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, 1379, 315, 1379, 1379, 1164, 1379, 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, 1379, 1379, 1379, 1379, 1379, 1164, 328, 329, 328, 328, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 330, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 333, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 332, 327, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1381, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1382, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1383, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1217, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1384, 1384, 1384, 1384, 1384, 1217, 1384, 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, 1384, 1384, 1384, 1384, 1164, 1384, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1385, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1384, 1384, 1384, 1384, 1384, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1386, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1387, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1388, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1389, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 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, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1390, 1164, 1391, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1392, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1393, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1358, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1394, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1395, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1375, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1396, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1206, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1397, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1398, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1358, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1399, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1365, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1400, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1401, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1402, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1375, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1403, 1164, 1164, 1164, 1404, 1164, 1164, 1164, 1164, 1164, 1405, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1406, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1372, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1358, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1407, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1408, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1409, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1410, 1411, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1358, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1412, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1413, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1399, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1414, 1164, 1164, 1415, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1358, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1416, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1372, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1417, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1418, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1419, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1358, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1420, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1421, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1407, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1422, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1423, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1369, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1398, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1424, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1425, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1426, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1427, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1428, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1364, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1429, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1430, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1399, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1431, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1399, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1432, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1369, 1164, 1164, 1164, 1433, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1434, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1399, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1435, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1436, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1437, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1217, 1340, 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, 1340, 1340, 1340, 1340, 1164, 1340, 1164, 1164, 1164, 1407, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1340, 1340, 1340, 1340, 1340, 1164, 1438, 1233, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1173, 1223, 1439, 1441, 1440, 1441, 1441, 1441, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1440, 1440, 1440, 1440, 1440, 1442, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 339, 1440, 337, 1443, 337, 337, 337, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 337, 1443, 1443, 1443, 1443, 1443, 338, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 339, 1443, 340, 1443, 1445, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1446, 1444, 1445, 1444, 1445, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1448, 1444, 1445, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1449, 1444, 1445, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1450, 1444, 1452, 1450, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 182, 2, 3, 4, 188, 6, 7, 8, 9, 10, 182, 182, 191, 194, 191, 12, 195, 14, 191, 202, 203, 206, 207, 213, 208, 209, 210, 19, 211, 212, 215, 217, 218, 219, 220, 221, 25, 18, 204, 205, 27, 244, 245, 247, 249, 247, 30, 250, 32, 247, 257, 258, 261, 262, 268, 263, 264, 265, 37, 266, 267, 270, 272, 273, 274, 275, 276, 43, 36, 259, 260, 45, 299, 300, 307, 309, 307, 48, 310, 50, 312, 315, 312, 52, 316, 54, 322, 321, 0, 56, 323, 324, 58, 325, 326, 326, 326, 326, 439, 61, 62, 63, 439, 467, 64, 65, 467, 467, 471, 471, 69, 64, 70, 469, 470, 472, 473, 471, 467, 474, 475, 477, 66, 67, 478, 479, 68, 471, 71, 72, 77, 84, 481, 482, 70, 469, 470, 472, 473, 471, 467, 474, 475, 477, 66, 67, 478, 479, 68, 71, 72, 77, 84, 481, 482, 480, 73, 74, 75, 76, 78, 79, 82, 80, 81, 83, 85, 86, 467, 88, 89, 90, 92, 95, 93, 94, 96, 98, 498, 498, 498, 499, 100, 501, 101, 502, 102, 499, 100, 501, 101, 502, 536, 103, 536, 104, 105, 103, 536, 104, 536, 536, 536, 108, 109, 110, 111, 547, 536, 536, 552, 536, 114, 115, 116, 536, 119, 114, 115, 116, 536, 119, 117, 117, 115, 116, 558, 118, 117, 117, 115, 116, 558, 118, 115, 536, 574, 536, 121, 575, 581, 124, 127, 129, 131, 132, 133, 127, 128, 586, 128, 586, 130, 536, 600, 601, 604, 605, 611, 606, 607, 608, 138, 609, 610, 613, 615, 616, 617, 618, 619, 144, 137, 602, 603, 146, 655, 656, 148, 538, 106, 540, 150, 151, 658, 760, 153, 154, 155, 760, 768, 768, 768, 158, 789, 788, 768, 791, 793, 768, 163, 164, 165, 797, 768, 167, 168, 169, 807, 778, 829, 172, 173, 174, 178, 179, 172, 173, 174, 178, 179, 175, 175, 173, 174, 176, 177, 175, 175, 173, 174, 176, 177, 876, 173, 768, 945, 180, 181, 945, 945, 182, 182, 183, 184, 185, 187, 189, 190, 182, 182, 182, 186, 182, 186, 182, 1, 182, 182, 182, 5, 191, 191, 192, 191, 193, 196, 191, 191, 11, 13, 191, 191, 191, 197, 198, 199, 15, 21, 26, 222, 28, 191, 191, 191, 200, 201, 191, 16, 191, 191, 191, 17, 191, 191, 191, 20, 214, 216, 22, 191, 191, 23, 24, 191, 223, 227, 224, 225, 226, 191, 191, 228, 229, 232, 234, 243, 230, 231, 191, 233, 235, 237, 236, 191, 238, 239, 240, 241, 242, 191, 191, 191, 246, 247, 247, 247, 248, 251, 247, 29, 31, 247, 247, 247, 252, 253, 254, 33, 39, 44, 277, 46, 247, 247, 247, 255, 256, 247, 34, 247, 247, 247, 35, 247, 247, 247, 38, 269, 271, 40, 247, 247, 41, 42, 247, 278, 282, 279, 280, 281, 247, 247, 283, 284, 287, 289, 298, 285, 286, 247, 288, 290, 292, 291, 247, 293, 294, 295, 296, 297, 247, 247, 247, 301, 302, 302, 303, 302, 304, 302, 302, 302, 305, 305, 305, 306, 305, 305, 305, 307, 307, 307, 308, 307, 47, 49, 307, 307, 311, 311, 311, 312, 312, 313, 312, 314, 312, 312, 51, 53, 312, 312, 317, 317, 318, 317, 317, 319, 320, 319, 55, 57, 321, 321, 321, 327, 326, 326, 328, 329, 330, 331, 333, 336, 337, 338, 339, 326, 340, 341, 343, 345, 346, 347, 351, 353, 354, 355, 371, 376, 383, 388, 395, 402, 405, 406, 410, 404, 414, 422, 426, 428, 433, 435, 438, 326, 326, 326, 326, 326, 326, 332, 326, 332, 326, 334, 59, 335, 326, 60, 326, 326, 342, 344, 326, 348, 349, 350, 346, 352, 326, 356, 357, 366, 369, 358, 359, 360, 361, 362, 363, 364, 365, 327, 367, 368, 370, 372, 375, 373, 374, 377, 380, 378, 379, 381, 382, 384, 386, 385, 387, 389, 390, 326, 391, 392, 393, 394, 326, 396, 399, 397, 398, 400, 401, 403, 407, 408, 409, 411, 413, 412, 415, 416, 417, 419, 418, 420, 421, 423, 424, 425, 427, 429, 430, 431, 432, 434, 436, 437, 440, 439, 439, 441, 442, 444, 439, 439, 439, 443, 439, 443, 445, 439, 447, 446, 446, 450, 451, 452, 453, 446, 455, 456, 457, 458, 460, 462, 463, 464, 465, 466, 446, 448, 446, 449, 446, 446, 446, 446, 446, 454, 446, 454, 459, 446, 461, 446, 467, 467, 468, 483, 484, 470, 486, 487, 474, 488, 489, 490, 491, 492, 494, 495, 496, 497, 467, 467, 467, 467, 467, 467, 471, 476, 467, 467, 467, 467, 467, 467, 467, 467, 467, 485, 467, 485, 467, 467, 467, 467, 493, 467, 87, 91, 97, 498, 500, 503, 99, 498, 498, 499, 504, 504, 505, 506, 508, 510, 511, 504, 504, 507, 504, 507, 504, 509, 504, 504, 504, 513, 512, 512, 514, 515, 516, 518, 520, 521, 526, 533, 512, 512, 512, 512, 517, 512, 517, 512, 519, 512, 512, 513, 522, 523, 524, 525, 527, 528, 531, 529, 530, 532, 534, 535, 537, 536, 545, 546, 548, 549, 551, 553, 554, 555, 557, 559, 560, 562, 563, 585, 588, 589, 590, 658, 659, 660, 661, 662, 556, 664, 681, 686, 693, 698, 700, 706, 709, 710, 714, 708, 718, 729, 733, 736, 744, 748, 751, 752, 536, 103, 104, 536, 106, 539, 536, 536, 541, 543, 544, 536, 542, 536, 536, 536, 536, 536, 107, 536, 536, 536, 536, 536, 550, 536, 550, 536, 536, 112, 536, 536, 113, 536, 536, 556, 536, 561, 536, 564, 573, 536, 120, 576, 577, 578, 536, 579, 122, 582, 123, 125, 583, 584, 536, 565, 567, 536, 566, 536, 536, 568, 571, 572, 536, 569, 570, 536, 536, 536, 536, 536, 536, 580, 126, 587, 536, 536, 591, 536, 536, 536, 592, 594, 536, 593, 536, 593, 536, 595, 596, 597, 134, 140, 145, 620, 147, 536, 536, 536, 598, 599, 536, 135, 536, 536, 536, 136, 536, 536, 536, 139, 612, 614, 141, 536, 536, 142, 143, 536, 621, 625, 622, 623, 624, 536, 536, 626, 627, 630, 641, 654, 628, 629, 536, 631, 632, 633, 635, 634, 536, 636, 637, 638, 639, 640, 642, 649, 643, 644, 645, 646, 647, 648, 650, 651, 652, 653, 536, 536, 536, 657, 149, 152, 536, 663, 665, 666, 676, 679, 667, 668, 669, 670, 671, 672, 673, 674, 675, 677, 678, 680, 682, 685, 683, 684, 687, 690, 688, 689, 691, 692, 694, 696, 695, 697, 699, 701, 703, 702, 704, 705, 707, 675, 711, 712, 713, 715, 717, 716, 719, 720, 721, 726, 722, 723, 724, 536, 537, 538, 106, 725, 543, 727, 728, 730, 731, 732, 734, 735, 737, 738, 739, 742, 740, 741, 743, 745, 746, 747, 749, 750, 536, 753, 753, 754, 755, 756, 758, 753, 753, 753, 757, 753, 757, 753, 759, 753, 761, 760, 760, 762, 763, 760, 764, 766, 760, 760, 760, 760, 765, 760, 765, 767, 760, 769, 768, 768, 772, 773, 774, 768, 775, 777, 780, 781, 782, 783, 784, 768, 785, 786, 790, 817, 821, 768, 822, 824, 826, 768, 827, 828, 830, 834, 836, 837, 768, 839, 857, 862, 869, 877, 884, 891, 896, 897, 901, 895, 906, 916, 922, 925, 934, 938, 942, 943, 944, 780, 770, 768, 771, 768, 768, 768, 768, 768, 768, 776, 768, 776, 768, 156, 779, 768, 768, 768, 768, 768, 768, 768, 768, 787, 768, 768, 157, 159, 768, 160, 799, 809, 812, 792, 813, 814, 800, 804, 806, 768, 792, 160, 794, 796, 161, 768, 794, 768, 795, 768, 768, 162, 798, 768, 768, 801, 803, 768, 801, 802, 804, 806, 803, 768, 805, 768, 768, 166, 808, 768, 768, 768, 810, 803, 804, 806, 810, 811, 768, 801, 803, 804, 806, 768, 801, 803, 804, 806, 768, 815, 803, 804, 806, 815, 816, 768, 160, 817, 792, 818, 804, 806, 819, 803, 160, 819, 792, 820, 823, 825, 170, 171, 768, 768, 831, 832, 833, 828, 835, 768, 768, 838, 768, 768, 840, 841, 850, 855, 842, 843, 844, 845, 846, 847, 848, 849, 769, 851, 852, 853, 854, 769, 856, 858, 861, 859, 860, 769, 769, 863, 866, 864, 865, 867, 868, 769, 870, 872, 871, 873, 874, 875, 768, 768, 878, 769, 879, 768, 880, 881, 882, 883, 770, 885, 888, 886, 887, 889, 890, 892, 893, 894, 769, 898, 899, 900, 902, 904, 905, 903, 769, 907, 908, 909, 912, 910, 911, 913, 914, 915, 917, 919, 918, 920, 921, 923, 924, 926, 927, 929, 932, 928, 930, 931, 933, 935, 936, 937, 939, 940, 941, 768, 768, 945, 946, 947, 945, 949, 948, 950, 948, 951, 952, 953, 948, 948 ] class << self attr_accessor :_lex_trans_actions private :_lex_trans_actions, :_lex_trans_actions= end self._lex_trans_actions = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 11, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 0, 14, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 0, 0, 0, 22, 23, 0, 0, 24, 25, 26, 27, 28, 29, 29, 30, 31, 29, 32, 31, 33, 31, 29, 29, 30, 29, 34, 29, 29, 35, 29, 29, 29, 29, 29, 29, 0, 36, 37, 0, 38, 37, 39, 37, 0, 0, 36, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, 45, 28, 46, 29, 29, 29, 46, 47, 0, 48, 0, 28, 29, 49, 29, 50, 51, 52, 0, 0, 0, 0, 0, 53, 54, 0, 55, 0, 28, 0, 56, 0, 29, 57, 29, 58, 29, 59, 60, 61, 60, 62, 60, 0, 63, 64, 63, 65, 63, 66, 67, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 70, 0, 28, 0, 71, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 72, 73, 0, 0, 0, 74, 75, 76, 77, 0, 7, 7, 78, 79, 79, 80, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 29, 57, 29, 29, 29, 59, 60, 61, 60, 60, 60, 0, 63, 64, 63, 63, 63, 82, 66, 83, 84, 0, 85, 86, 87, 90, 91, 0, 28, 0, 7, 0, 7, 92, 93, 94, 59, 95, 0, 96, 0, 97, 98, 99, 0, 100, 101, 0, 102, 7, 7, 103, 104, 0, 0, 105, 106, 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 111, 0, 0, 112, 0, 113, 114, 115, 0, 116, 117, 118, 0, 7, 0, 0, 119, 120, 0, 28, 121, 0, 0, 0, 0, 0, 122, 123, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 126, 127, 128, 0, 129, 130, 131, 7, 7, 132, 0, 0, 133, 134, 135, 108, 108, 108, 108, 108, 108, 108, 108, 136, 137, 138, 0, 0, 139, 0, 140, 141, 142, 0, 143, 144, 145, 0, 7, 0, 0, 146, 147, 0, 28, 148, 0, 0, 0, 0, 0, 149, 150, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 153, 154, 155, 0, 156, 157, 0, 158, 0, 159, 160, 161, 162, 163, 164, 0, 165, 166, 167, 168, 169, 170, 7, 171, 0, 0, 172, 173, 174, 175, 176, 177, 178, 0, 179, 7, 180, 181, 0, 0, 182, 183, 184, 185, 0, 186, 187, 188, 0, 189, 0, 0, 190, 191, 192, 193, 194, 195, 0, 28, 0, 0, 7, 7, 0, 0, 0, 196, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 199, 200, 201, 202, 203, 59, 204, 0, 205, 0, 0, 0, 206, 0, 207, 208, 0, 0, 209, 0, 0, 0, 210, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 214, 215, 0, 0, 0, 216, 217, 218, 59, 219, 0, 28, 220, 0, 221, 222, 0, 28, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 225, 0, 226, 227, 228, 229, 230, 59, 231, 0, 0, 232, 0, 233, 234, 235, 236, 28, 0, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 7, 7, 7, 237, 238, 239, 240, 241, 242, 243, 0, 244, 245, 246, 247, 248, 249, 250, 251, 252, 59, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 0, 260, 7, 7, 0, 261, 262, 263, 264, 265, 0, 0, 0, 0, 0, 266, 267, 59, 268, 0, 269, 28, 270, 271, 272, 273, 274, 275, 0, 28, 0, 0, 0, 0, 0, 0, 276, 277, 278, 279, 59, 280, 0, 281, 28, 282, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 286, 0, 8, 0, 0, 7, 287, 0, 0, 287, 287, 0, 0, 7, 7, 0, 288, 0, 288, 288, 288, 0, 0, 288, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 0, 288, 289, 290, 290, 291, 292, 0, 293, 294, 0, 72, 0, 295, 0, 296, 297, 298, 299, 300, 29, 301, 302, 303, 304, 305, 59, 306, 0, 307, 308, 0, 309, 310, 0, 311, 312, 287, 313, 0, 314, 0, 0, 315, 0, 0, 0, 0, 316, 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, 318, 0, 319, 320, 0, 0, 0, 321, 0, 0, 322, 323, 324, 325, 326, 327, 0, 0, 0, 328, 329, 0, 330, 331, 332, 0, 7, 333, 334, 335, 0, 336, 108, 108, 108, 108, 108, 108, 108, 108, 337, 338, 339, 0, 0, 340, 0, 341, 342, 343, 0, 344, 345, 346, 0, 7, 0, 0, 347, 348, 0, 28, 349, 0, 0, 0, 0, 0, 350, 351, 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, 0, 0, 0, 357, 28, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 72, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 358, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 359, 360, 361, 362, 363, 363, 359, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 364, 365, 366, 0, 28, 0, 0, 367, 368, 369, 59, 370, 0, 371, 28, 372, 7, 373, 374, 0, 28, 375, 0, 0, 376, 377, 378, 379, 59, 380, 0, 28, 381, 382, 383, 384, 0, 28, 0, 385, 0, 7, 386, 0, 0, 0, 0, 387, 0, 0, 388, 388, 0, 389, 0, 0, 0, 390, 7, 391, 391, 391, 0, 0, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 393, 394, 395, 0, 396, 397, 398, 399, 400, 401, 59, 402, 0, 403, 0, 0, 404, 405, 406, 407, 408, 409, 410, 411, 0, 412, 413, 0, 0, 414, 415, 416, 0, 0, 417, 0, 0, 416, 418, 419, 420, 421, 0, 422, 423, 0, 424, 425, 426, 0, 427, 428, 0, 0, 429, 430, 416, 416, 431, 0, 0, 432, 433, 0, 434, 0, 435, 436, 0, 0, 437, 438, 439, 440, 440, 441, 442, 0, 0, 443, 444, 444, 445, 446, 447, 448, 448, 449, 450, 451, 452, 452, 453, 454, 0, 0, 455, 456, 457, 458, 459, 460, 461, 457, 459, 462, 388, 463, 0, 0, 0, 0, 0, 464, 465, 391, 391, 391, 466, 391, 467, 468, 28, 469, 470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 472, 473, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 473, 475, 476, 0, 477, 0, 478, 0, 0, 0, 0, 479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 0, 0, 479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 481, 482, 483, 7, 85, 484, 0, 485, 0, 486, 0, 0, 0, 487, 488 ] class << self attr_accessor :_lex_to_state_actions private :_lex_to_state_actions, :_lex_to_state_actions= end self._lex_to_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 88, 0, 88, 0, 0, 0, 88, 88, 0, 0, 0, 0, 88, 0, 88, 0, 88, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 88, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_from_state_actions private :_lex_from_state_actions, :_lex_from_state_actions= end self._lex_from_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 89, 0, 89, 0, 0, 0, 89, 89, 0, 0, 0, 0, 89, 0, 89, 0, 89, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 89, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_eof_trans private :_lex_eof_trans, :_lex_eof_trans= end self._lex_eof_trans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 44, 44, 44, 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 75, 75, 75, 75, 81, 81, 81, 81, 0, 0, 0, 0, 95, 97, 99, 99, 99, 104, 104, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 179, 181, 181, 181, 193, 193, 193, 201, 203, 203, 203, 203, 203, 209, 201, 201, 201, 201, 201, 201, 201, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 201, 236, 236, 236, 236, 286, 286, 286, 291, 293, 293, 293, 297, 297, 300, 300, 300, 300, 305, 305, 305, 305, 291, 297, 297, 297, 297, 297, 297, 297, 297, 297, 337, 337, 0, 350, 351, 352, 354, 356, 358, 356, 356, 0, 368, 369, 373, 373, 374, 383, 384, 385, 385, 385, 388, 388, 390, 391, 392, 392, 392, 394, 395, 396, 396, 392, 388, 388, 401, 402, 402, 402, 402, 402, 405, 405, 405, 405, 411, 412, 412, 412, 412, 420, 412, 412, 412, 412, 425, 412, 412, 412, 412, 412, 412, 431, 432, 433, 433, 0, 440, 444, 444, 445, 454, 455, 456, 456, 456, 459, 459, 461, 462, 463, 463, 463, 465, 466, 467, 467, 463, 459, 459, 472, 473, 473, 473, 473, 473, 476, 476, 476, 476, 482, 483, 483, 483, 483, 491, 483, 483, 483, 483, 496, 483, 483, 483, 483, 483, 483, 502, 503, 504, 504, 0, 511, 512, 0, 518, 0, 525, 529, 529, 0, 0, 538, 539, 543, 543, 0, 548, 0, 551, 0, 554, 554, 555, 556, 0, 597, 599, 600, 601, 602, 604, 606, 610, 610, 601, 601, 601, 601, 612, 601, 601, 606, 601, 601, 597, 616, 616, 616, 616, 616, 616, 606, 606, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 655, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 601, 0, 698, 699, 700, 702, 698, 705, 0, 724, 726, 728, 729, 730, 731, 732, 734, 731, 731, 731, 731, 731, 737, 731, 731, 739, 737, 737, 731, 0, 758, 759, 104, 104, 762, 763, 104, 759, 759, 766, 768, 771, 759, 772, 759, 773, 774, 776, 778, 759, 766, 779, 779, 768, 779, 783, 779, 779, 779, 779, 0, 179, 791, 792, 791, 791, 0, 801, 802, 804, 806, 808, 806, 810, 0, 822, 823, 824, 825, 827, 829, 831, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 832, 0, 890, 893, 896, 897, 901, 903, 904, 905, 906, 907, 909, 912, 913, 915, 917, 920, 921, 923, 924, 201, 921, 926, 921, 912, 912, 912, 912, 944, 947, 949, 950, 954, 957, 958, 959, 960, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 912, 966, 912, 912, 912, 967, 974, 974, 976, 978, 987, 988, 989, 989, 989, 992, 992, 994, 995, 996, 996, 996, 998, 999, 1000, 1000, 996, 992, 992, 1005, 1006, 1006, 1006, 1006, 1006, 1009, 1009, 1009, 1009, 1015, 1016, 1016, 1016, 1016, 1024, 1016, 1016, 1016, 1016, 1030, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1048, 1049, 1050, 1050, 201, 912, 912, 1054, 912, 907, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 201, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1107, 897, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1132, 912, 0, 1139, 1140, 1141, 1143, 1145, 1147, 0, 1156, 1157, 1158, 1159, 1161, 1156, 1164, 0, 297, 1219, 1221, 1222, 1223, 1224, 1226, 1228, 1230, 1233, 1233, 297, 1235, 1237, 1238, 1235, 1235, 1240, 1242, 1243, 1243, 1246, 1257, 297, 1263, 1265, 1267, 1268, 1271, 1272, 1246, 1246, 1275, 1275, 1275, 1281, 1283, 1284, 1287, 1288, 1289, 1275, 1275, 1296, 1301, 1306, 1275, 1275, 1313, 1313, 1275, 1275, 1242, 1235, 1235, 1242, 1235, 1235, 1230, 297, 1330, 1331, 1331, 1331, 1331, 1331, 1331, 1337, 1230, 1340, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1380, 1381, 1341, 1341, 1385, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1439, 1224, 1440, 0, 1444, 1444, 0, 1448, 1448, 1448, 1448, 1452 ] class << self attr_accessor :lex_start end self.lex_start = 182; 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 = 191; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 247; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 302; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 305; class << self attr_accessor :lex_en_interp_backslash_delimited end self.lex_en_interp_backslash_delimited = 307; class << self attr_accessor :lex_en_plain_backslash_delimited end self.lex_en_plain_backslash_delimited = 311; class << self attr_accessor :lex_en_interp_backslash_delimited_words end self.lex_en_interp_backslash_delimited_words = 312; class << self attr_accessor :lex_en_plain_backslash_delimited_words end self.lex_en_plain_backslash_delimited_words = 317; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 319; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 321; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 326; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 439; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 446; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 467; class << self attr_accessor :lex_en_expr_cmdarg end self.lex_en_expr_cmdarg = 498; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 504; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 512; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 536; class << self attr_accessor :lex_en_expr_labelarg end self.lex_en_expr_labelarg = 753; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 760; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 768; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 945; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 948; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 182; # line 82 "lib/parser/lexer.rl" # % ESCAPES = { ?a.ord => "\a", ?b.ord => "\b", ?e.ord => "\e", ?f.ord => "\f", ?n.ord => "\n", ?r.ord => "\r", ?s.ord => "\s", ?t.ord => "\t", ?v.ord => "\v", ?\\.ord => "\\" }.freeze REGEXP_META_CHARACTERS = Regexp.union(*"\\$()*+.<>?[]^{|}".chars).freeze attr_reader :source_buffer attr_accessor :diagnostics attr_accessor :static_env attr_accessor :force_utf32 attr_accessor :cond, :cmdarg, :in_kwarg attr_accessor :tokens, :comments def initialize(version) @version = version @static_env = nil @tokens = nil @comments = nil reset end def reset(reset_state=true) # Ragel state: if reset_state # Unit tests set state prior to resetting lexer. @cs = self.class.lex_en_line_begin @cond = StackState.new('cond') @cmdarg = StackState.new('cmdarg') @cond_stack = [] @cmdarg_stack = [] end @force_utf32 = false # Set to true by some tests @source_pts = nil # @source as a codepoint array @p = 0 # stream position (saved manually in #advance) @ts = nil # token start @te = nil # token end @act = 0 # next action @stack = [] # state stack @top = 0 # state stack top pointer # Lexer state: @token_queue = [] @literal_stack = [] @eq_begin_s = nil # location of last encountered =begin @sharp_s = nil # location of last encountered # @newline_s = nil # location of last encountered newline @num_base = nil # last numeric base @num_digits_s = nil # starting position of numeric digits @num_suffix_s = nil # starting position of numeric suffix @num_xfrm = nil # numeric suffix-induced transformation @escape_s = nil # starting position of current sequence @escape = nil # last escaped sequence, as string @herebody_s = nil # starting position of current heredoc line # Ruby 1.9 ->() lambdas emit a distinct token if do/{ is # encountered after a matching closing parenthesis. @paren_nest = 0 @lambda_stack = [] # After encountering the closing line of <<~SQUIGGLY_HEREDOC, # we store the indentation level and give it out to the parser # on request. It is not possible to infer indentation level just # from the AST because escape sequences such as `\ ` or `\t` are # expanded inside the lexer, but count as non-whitespace for # indentation purposes. @dedent_level = nil # If the lexer is in `command state' (aka expr_value) # at the entry to #advance, it will transition to expr_cmdarg # instead of expr_arg at certain points. @command_state = false # True at the end of "def foo a:" @in_kwarg = false # State before =begin / =end block comment @cs_before_block_comment = self.class.lex_en_line_begin end def source_buffer=(source_buffer) @source_buffer = source_buffer if @source_buffer source = @source_buffer.source if source.encoding == Encoding::UTF_8 @source_pts = source.unpack('U*') else @source_pts = source.unpack('C*') end if @source_pts[0] == 0xfeff # Skip byte order mark. @p = 1 end else @source_pts = nil end end def encoding @source_buffer.source.encoding end LEX_STATES = { :line_begin => lex_en_line_begin, :expr_dot => lex_en_expr_dot, :expr_fname => lex_en_expr_fname, :expr_value => lex_en_expr_value, :expr_beg => lex_en_expr_beg, :expr_mid => lex_en_expr_mid, :expr_arg => lex_en_expr_arg, :expr_cmdarg => lex_en_expr_cmdarg, :expr_end => lex_en_expr_end, :expr_endarg => lex_en_expr_endarg, :expr_endfn => lex_en_expr_endfn, :expr_labelarg => lex_en_expr_labelarg, :interp_string => lex_en_interp_string, :interp_words => lex_en_interp_words, :plain_string => lex_en_plain_string, :plain_words => lex_en_plain_string, } def state LEX_STATES.invert.fetch(@cs, @cs) end def state=(state) @cs = LEX_STATES.fetch(state) end def push_cmdarg @cmdarg_stack.push(@cmdarg) @cmdarg = StackState.new("cmdarg.#{@cmdarg_stack.count}") end def pop_cmdarg @cmdarg = @cmdarg_stack.pop end def push_cond @cond_stack.push(@cond) @cond = StackState.new("cond.#{@cond_stack.count}") end def pop_cond @cond = @cond_stack.pop end def dedent_level # We erase @dedent_level as a precaution to avoid accidentally # using a stale value. dedent_level, @dedent_level = @dedent_level, nil dedent_level end # Return next token: [type, value]. def advance if @token_queue.any? return @token_queue.shift end # Ugly, but dependent on Ragel output. Consider refactoring it somehow. klass = self.class _lex_trans_keys = klass.send :_lex_trans_keys _lex_key_spans = klass.send :_lex_key_spans _lex_index_offsets = klass.send :_lex_index_offsets _lex_indicies = klass.send :_lex_indicies _lex_trans_targs = klass.send :_lex_trans_targs _lex_trans_actions = klass.send :_lex_trans_actions _lex_to_state_actions = klass.send :_lex_to_state_actions _lex_from_state_actions = klass.send :_lex_from_state_actions _lex_eof_trans = klass.send :_lex_eof_trans pe = @source_pts.size + 2 p, eof = @p, pe @command_state = (@cs == klass.lex_en_expr_value || @cs == klass.lex_en_line_begin) # line 10834 "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 89 then # line 1 "NONE" begin @ts = p end # line 10862 "lib/parser/lexer.rb" end _keys = @cs << 1 _inds = _lex_index_offsets[ @cs] _slen = _lex_key_spans[ @cs] _wide = ( (@source_pts[p] || 0)) _trans = if ( _slen > 0 && _lex_trans_keys[_keys] <= _wide && _wide <= _lex_trans_keys[_keys + 1] ) then _lex_indicies[ _inds + _wide - _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 28 then # line 491 "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 108 then # line 798 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 29 then # line 838 "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 59 then # line 1182 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 63 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 292 then # line 1226 "lib/parser/lexer.rl" begin tm = p end when 36 then # line 1495 "lib/parser/lexer.rl" begin tm = p end when 38 then # line 1511 "lib/parser/lexer.rl" begin tm = p end when 40 then # line 1539 "lib/parser/lexer.rl" begin tm = p end when 69 then # line 1729 "lib/parser/lexer.rl" begin heredoc_e = p end when 334 then # line 1809 "lib/parser/lexer.rl" begin @escape = nil end when 363 then # line 1878 "lib/parser/lexer.rl" begin tm = p end when 290 then # line 1933 "lib/parser/lexer.rl" begin ident_tok = tok; ident_ts = @ts; ident_te = @te; end when 452 then # line 2114 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 444 then # line 2115 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 448 then # line 2116 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 440 then # line 2117 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 459 then # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 416 then # line 2119 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 432 then # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 425 then # line 2177 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 422 then # line 2178 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 85 then # line 2330 "lib/parser/lexer.rl" begin tm = p end when 7 then # line 1 "NONE" begin @te = p+1 end when 105 then # line 1064 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{'.freeze) if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace @cs = 760; begin p += 1 _goto_level = _out next end end end when 5 then # line 1001 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 101 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 106 then # line 1001 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 103 then # line 988 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 104 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 6 then # line 871 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 4 then # line 847 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 133 then # line 1064 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{'.freeze) if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace @cs = 760; begin p += 1 _goto_level = _out next end end end when 10 then # line 1001 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 130 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 134 then # line 1001 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 132 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 11 then # line 871 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 9 then # line 847 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 157 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 159 then # line 988 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 160 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 163 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 165 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 172 then # line 1064 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{'.freeze) if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace @cs = 760; begin p += 1 _goto_level = _out next end end end when 13 then # line 1001 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 169 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 173 then # line 1001 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 171 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 12 then # line 847 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 175 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 182 then # line 1064 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{'.freeze) if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace @cs = 760; begin p += 1 _goto_level = _out next end end end when 15 then # line 1001 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 178 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 183 then # line 1001 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 180 then # line 988 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 181 then # line 847 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 14 then # line 847 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 185 then # line 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source_buffer.slice(@te...@te+2) end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 753; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 187 then # line 988 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 188 then # line 1156 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tREGEXP_OPT, tok(@ts, @te - 1), @ts, @te - 1) p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 189 then # line 1143 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unknown_options = tok.scan(/[^imxouesn]/) if unknown_options.any? diagnostic :error, :regexp_options, { :options => unknown_options.join } end emit(:tREGEXP_OPT) @cs = 768; begin p += 1 _goto_level = _out next end end end when 16 then # line 1285 "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 190 then # line 1285 "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 192 then # line 1298 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@@[0-9]/ diagnostic :error, :cvar_name, { :name => tok } end emit(:tCVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 191 then # line 1308 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@[0-9]/ diagnostic :error, :ivar_name, { :name => tok } end emit(:tIVAR) @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end when 213 then # line 1329 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(KEYWORDS_BEGIN); @cs = 439; begin p += 1 _goto_level = _out next end end end when 199 then # line 1337 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 439; begin p += 1 _goto_level = _out next end end end when 18 then # line 1341 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs = 768; begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 196 then # line 1350 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 439; begin p += 1 _goto_level = _out next end end end when 208 then # line 1354 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 20 then # line 1360 "lib/parser/lexer.rl" begin @te = p+1 begin if version?(23) type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end else p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end end when 195 then # line 1373 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 194 then # line 517 "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 212 then # line 1329 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS_BEGIN); @cs = 439; begin p += 1 _goto_level = _out next end end end when 209 then # line 1333 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 439; begin p += 1 _goto_level = _out next end end end when 211 then # line 1337 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 439; begin p += 1 _goto_level = _out next end end end when 206 then # line 1341 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs = 768; begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 202 then # line 1350 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 439; begin p += 1 _goto_level = _out next end end end when 207 then # line 1357 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 200 then # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 205 then # line 1373 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 19 then # line 1350 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit_table(PUNCTUATION) @cs = 439; begin p += 1 _goto_level = _out next end end end when 17 then # line 1373 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 198 then # line 1 "NONE" begin case @act when 39 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN); @cs = 439; begin p += 1 _goto_level = _out next end end when 40 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 439; begin p += 1 _goto_level = _out next end end when 41 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 439; begin p += 1 _goto_level = _out next end end end end when 22 then # line 1385 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) p = p - 1; @cs = 753; begin p += 1 _goto_level = _out next end end end when 215 then # line 1391 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 214 then # line 517 "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 217 then # line 1388 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 216 then # line 1391 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 21 then # line 1391 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 223 then # line 1417 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 467; begin p += 1 _goto_level = _out next end end end when 222 then # line 1423 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 221 then # line 517 "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 233 then # line 1402 "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 224 then # line 1406 "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 229 then # line 1417 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 467; begin p += 1 _goto_level = _out next end end end when 227 then # line 1420 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 232 then # line 1423 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 256 then # line 1481 "lib/parser/lexer.rl" begin @te = p+1 begin # Unlike expr_beg as invoked in the next rule, do not warn p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 239 then # line 1499 "lib/parser/lexer.rl" begin @te = p+1 begin if tok(tm, tm + 1) == '/'.freeze # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 536 _goto_level = _again next end end end when 245 then # line 1523 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 24 then # line 1531 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 536 _goto_level = _again next end end end when 247 then # line 1540 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 768 _goto_level = _again next end end end when 39 then # line 1551 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 234 then # line 1565 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 235 then # line 517 "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 1490 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 242 then # line 1512 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 536 _goto_level = _again next end end end when 244 then # line 1528 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 238 then # line 1551 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 237 then # line 1556 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 255 then # line 1565 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 25 then # line 1556 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 41 then # line 1565 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 23 then # line 1 "NONE" begin case @act when 67 then begin begin p = (( @te))-1; end if tok(tm, tm + 1) == '/'.freeze # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 536 _goto_level = _again next end end when 68 then begin begin p = (( @te))-1; end diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 536 _goto_level = _again next end end when 73 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 768 _goto_level = _again next end end else begin begin p = (( @te))-1; end end end end when 43 then # line 1601 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 467 _goto_level = _again next end end end when 260 then # line 517 "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 261 then # line 1601 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 467 _goto_level = _again next end end end when 44 then # line 1601 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1 begin @cs = 467 _goto_level = _again next end end end when 42 then # line 1 "NONE" begin case @act when 80 then begin begin p = (( @te))-1; end if @cond.active? emit(:kDO_COND, 'do'.freeze, @te - 2, @te) else emit(:kDO, 'do'.freeze, @te - 2, @te) end @cs = 760; begin p += 1 _goto_level = _out next end end when 81 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 467 _goto_level = _again next end end end end when 271 then # line 1635 "lib/parser/lexer.rl" begin @te = p+1 begin emit_do(true) @cs = 760; begin p += 1 _goto_level = _out next end end end when 264 then # line 1641 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 265 then # line 517 "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 266 then # line 1638 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 269 then # line 1641 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 275 then # line 1665 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 274 then # line 517 "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 283 then # line 1657 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 536 _goto_level = _again next end end end when 277 then # line 1659 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 281 then # line 1665 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 276 then # line 1 "NONE" begin case @act when 88 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 536; begin p += 1 _goto_level = _out next end end when 89 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 536 _goto_level = _again next end end end end when 56 then # line 1680 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tUNARY_NUM, tok(@ts, @ts + 1), @ts, @ts + 1) p = p - 1; @cs = 768; begin p += 1 _goto_level = _out next end end end when 314 then # line 1697 "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 308 then # line 1704 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = @source_buffer.slice(@ts).chr, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 54 then # line 1711 "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 327 then # line 1767 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; emit(:tSYMBEG, tok(@ts, @ts + 1), @ts, @ts + 1) begin @cs = 326 _goto_level = _again next end end end when 315 then # line 1775 "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 326 then # line 1783 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1, @ts + 2)) @cs = 768; begin p += 1 _goto_level = _out next end end end when 68 then # line 1797 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 768; begin p += 1 _goto_level = _out next end end end when 331 then # line 1824 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[@source_buffer.slice(@ts + 1)] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 330 then # line 1834 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 316 then # line 1873 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 51 then # line 1893 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if version?(18) ident = tok(@ts, @te - 2) emit((@source_buffer.slice(@ts) =~ /[A-Z]/) ? :tCONSTANT : :tIDENTIFIER, ident, @ts, @te - 2) p = p - 1; # continue as a symbol if !@static_env.nil? && @static_env.declared?(ident) @cs = 768; else @cs = (arg_or_cmdarg); end else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) @cs = 753; end begin p += 1 _goto_level = _out next end end end when 48 then # line 1935 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER, ident_tok, ident_ts, ident_te) p = ident_te - 1 if !@static_env.nil? && @static_env.declared?(ident_tok) && @version < 25 @cs = 439; else @cs = 498; end begin p += 1 _goto_level = _out next end end end when 302 then # line 1954 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs_before_block_comment = @cs begin @cs = 182 _goto_level = _again next end end end when 55 then # line 1970 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 768 _goto_level = _again next end end end when 286 then # line 517 "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 313 then # line 1680 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tUNARY_NUM, tok(@ts, @ts + 1), @ts, @ts + 1) p = p - 1; @cs = 768; begin p += 1 _goto_level = _out next end end end when 312 then # line 1687 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR, '*'.freeze) begin p += 1 _goto_level = _out next end end end when 309 then # line 1711 "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 307 then # line 1717 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 317 then # line 1797 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 768; begin p += 1 _goto_level = _out next end end end when 329 then # line 1834 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 335 then # line 1840 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 310 then # line 1873 "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 289 then # line 1270 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; 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 299 then # line 1951 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 301 then # line 1954 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs_before_block_comment = @cs begin @cs = 182 _goto_level = _again next end end end when 304 then # line 1970 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 768 _goto_level = _again next end end end when 53 then # line 1717 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 71 then # line 1811 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 47 then # line 1270 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; 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 52 then # line 1951 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 67 then # line 1970 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 768 _goto_level = _again next end end end when 50 then # line 1 "NONE" begin case @act when 94 then begin begin p = (( @te))-1; end emit(:tUNARY_NUM, tok(@ts, @ts + 1), @ts, @ts + 1) p = p - 1; @cs = 768; begin p += 1 _goto_level = _out next end end when 113 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 114 then begin begin p = (( @te))-1; end emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 512; begin p += 1 _goto_level = _out next end end when 115 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 760; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 768 _goto_level = _again next end end when 118 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 122 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 768 _goto_level = _again next end end end end when 365 then # line 1990 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 366 then # line 517 "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 367 then # line 1978 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 371 then # line 1990 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 74 then # line 2000 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 375 then # line 2005 "lib/parser/lexer.rl" begin @te = p+1 begin begin @cs = (push_literal(tok, tok, @ts)) _goto_level = _again next end end end when 374 then # line 2015 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 373 then # line 517 "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 377 then # line 2009 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 376 then # line 2015 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 73 then # line 2015 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 536 _goto_level = _again next end end end when 410 then # line 2026 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLAMBDA, '->'.freeze, @ts, @ts + 2) @lambda_stack.push @paren_nest @cs = 439; begin p += 1 _goto_level = _out next end end end when 83 then # line 2063 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 760; begin p += 1 _goto_level = _out next end end end when 385 then # line 2198 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts, nil, false, false, true)) _goto_level = _again next end end end when 76 then # line 2216 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 407 then # line 2223 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 446; begin p += 1 _goto_level = _out next end end end when 400 then # line 2250 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION); @cs = 760; begin p += 1 _goto_level = _out next end end end when 392 then # line 2260 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) if @version < 24 @cond.lexpop @cmdarg.lexpop else @cond.pop @cmdarg.pop end if tok == '}'.freeze || tok == ']'.freeze if @version >= 25 @cs = 768; else @cs = 504; end else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 405 then # line 2285 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 536; begin p += 1 _goto_level = _out next end end end when 390 then # line 2289 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tEH, '?'.freeze) @cs = 760; begin p += 1 _goto_level = _out next end end end when 387 then # line 2297 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end when 389 then # line 2310 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSEMI, ';'.freeze) @cs = 760; begin p += 1 _goto_level = _out next end end end when 468 then # line 2313 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, :bare_backslash, nil, range(@ts, @ts + 1) p = p - 1; end end when 384 then # line 2319 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 383 then # line 517 "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 478 then # line 2059 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 326; begin p += 1 _goto_level = _out next end end end when 476 then # line 2063 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 760; begin p += 1 _goto_level = _out next end end end when 475 then # line 2074 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 760; begin p += 1 _goto_level = _out next end end end when 413 then # line 2148 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, :no_dot_digit_literal end end when 465 then # line 2208 "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 404 then # line 2216 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 321 _goto_level = _again next end end end when 411 then # line 2223 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 446; begin p += 1 _goto_level = _out next end end end when 470 then # line 1270 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; 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 406 then # line 2250 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION); @cs = 760; begin p += 1 _goto_level = _out next end end end when 399 then # line 2256 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end when 412 then # line 2297 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end when 397 then # line 2304 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 403 then # line 2319 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 81 then # line 2121 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 77 then # line 2148 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :error, :no_dot_digit_literal end end when 80 then # line 2180 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 75 then # line 2319 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 78 then # line 1 "NONE" begin case @act when 135 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{'.freeze emit(:tLAMBEG, '{'.freeze) else # 'do' emit(:kDO_LAMBDA, 'do'.freeze) end else if tok == '{'.freeze emit(:tLCURLY, '{'.freeze) else # 'do' emit_do end end @cs = 760; begin p += 1 _goto_level = _out next end end when 136 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 326; begin p += 1 _goto_level = _out next end end when 137 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 760; begin p += 1 _goto_level = _out next end end when 138 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 536; begin p += 1 _goto_level = _out next end end when 139 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 760; begin p += 1 _goto_level = _out next end end when 140 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 512; begin p += 1 _goto_level = _out next end end when 141 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not'.freeze @cs = 536; begin p += 1 _goto_level = _out next end else @cs = 467; begin p += 1 _goto_level = _out next end end end when 142 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) unless !@static_env.nil? && @static_env.declared?(tok) @cs = (arg_or_cmdarg); end else emit(:k__ENCODING__, '__ENCODING__'.freeze) end begin p += 1 _goto_level = _out next end end when 143 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 144 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 146 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i, @ts, @te - 1) p = p - 1; begin p += 1 _goto_level = _out next end end end when 147 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f, @ts, @te - 1) p = p - 1; begin p += 1 _goto_level = _out next end end end when 148 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 150 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 154 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 155 then begin begin p = (( @te))-1; end if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 467; begin p += 1 _goto_level = _out next end end when 156 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION); @cs = 760; begin p += 1 _goto_level = _out next end end when 157 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end end when 87 then # line 2331 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 768 _goto_level = _again next end end end when 483 then # line 2334 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 182; begin p += 1 _goto_level = _out next end end end when 484 then # line 2334 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 182; begin p += 1 _goto_level = _out next end end end when 84 then # line 2334 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 182; begin p += 1 _goto_level = _out next end end end when 487 then # line 2344 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = (@cs_before_block_comment) _goto_level = _again next end end end when 486 then # line 2352 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :embedded_document, nil, range(@eq_begin_s, @eq_begin_s + '=begin'.length) end end when 98 then # line 2362 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 948 _goto_level = _again next end end end when 2 then # line 2366 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 90 then # line 2369 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 760 _goto_level = _again next end end end when 91 then # line 517 "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 92 then # line 2359 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 97 then # line 2362 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 948 _goto_level = _again next end end end when 96 then # line 2369 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 760 _goto_level = _again next end end end when 1 then # line 2369 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 760 _goto_level = _again next end end end when 66 then # line 491 "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 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 102 then # line 491 "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 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[@source_buffer.slice(@ts + 1)] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 303 then # line 491 "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 1954 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs_before_block_comment = @cs begin @cs = 182 _goto_level = _again next end end end when 488 then # line 491 "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 2344 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = (@cs_before_block_comment) _goto_level = _again next end end end when 485 then # line 491 "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 2349 "lib/parser/lexer.rl" begin @te = p+1 end when 99 then # line 491 "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 2362 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 948 _goto_level = _again next end end end when 3 then # line 491 "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 2366 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 436 then # line 625 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 434 then # line 626 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, chars)) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 438 then # line 627 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 435 then # line 628 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars, @ts, @te - 2); p -= 2 } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 437 then # line 629 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars, @ts, @te - 6); p -= 6 } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 426 then # line 633 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Float(chars))) } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 427 then # line 634 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars), @ts, @te - 2); p -= 2 } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 428 then # line 638 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 430 then # line 639 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 429 then # line 640 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars), @ts, @te - 6); p -= 6 } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 125 then # line 655 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 if @version < 24 if codepoints.start_with?(" ") || codepoints.start_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s + 2, @escape_s + 3) end if spaces_p = codepoints.index(/[ \t]{2}/) diagnostic :fatal, :invalid_unicode_escape, nil, range(codepoint_s + spaces_p + 1, codepoint_s + spaces_p + 2) end if codepoints.end_with?(" ") || codepoints.end_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(p - 1, p) end end codepoints.scan(/([0-9a-fA-F]+)|([ \t]+)/).each do |(codepoint_str, spaces)| if spaces codepoint_s += spaces.length else codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length end end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 152 then # line 655 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 if @version < 24 if codepoints.start_with?(" ") || codepoints.start_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s + 2, @escape_s + 3) end if spaces_p = codepoints.index(/[ \t]{2}/) diagnostic :fatal, :invalid_unicode_escape, nil, range(codepoint_s + spaces_p + 1, codepoint_s + spaces_p + 2) end if codepoints.end_with?(" ") || codepoints.end_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(p - 1, p) end end codepoints.scan(/([0-9a-fA-F]+)|([ \t]+)/).each do |(codepoint_str, spaces)| if spaces codepoint_s += spaces.length else codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length end end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 353 then # line 655 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 if @version < 24 if codepoints.start_with?(" ") || codepoints.start_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s + 2, @escape_s + 3) end if spaces_p = codepoints.index(/[ \t]{2}/) diagnostic :fatal, :invalid_unicode_escape, nil, range(codepoint_s + spaces_p + 1, codepoint_s + spaces_p + 2) end if codepoints.end_with?(" ") || codepoints.end_with?("\t") diagnostic :fatal, :invalid_unicode_escape, nil, range(p - 1, p) end end codepoints.scan(/([0-9a-fA-F]+)|([ \t]+)/).each do |(codepoint_str, spaces)| if spaces codepoint_s += spaces.length else codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length end end end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 109 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 136 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 337 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 112 then # line 702 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 139 then # line 702 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 340 then # line 702 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 114 then # line 721 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 141 then # line 721 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 342 then # line 721 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 111 then # line 728 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 138 then # line 728 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 339 then # line 728 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 128 then # line 732 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 155 then # line 732 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 356 then # line 732 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 127 then # line 736 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 154 then # line 736 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 355 then # line 736 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 122 then # line 742 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 149 then # line 742 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 350 then # line 742 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 121 then # line 746 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 148 then # line 746 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 349 then # line 746 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 126 then # line 752 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 153 then # line 752 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 354 then # line 752 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 123 then # line 766 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 150 then # line 766 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 351 then # line 766 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 110 then # line 792 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 137 then # line 792 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 338 then # line 792 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 161 then # line 798 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 871 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 166 then # line 798 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 871 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 57 then # line 838 "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 491 "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 30 then # line 838 "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 1495 "lib/parser/lexer.rl" begin tm = p end when 32 then # line 838 "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 1511 "lib/parser/lexer.rl" begin tm = p end when 34 then # line 838 "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 1539 "lib/parser/lexer.rl" begin tm = p end when 201 then # line 838 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 220 then # line 838 "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 1388 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 228 then # line 838 "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 1420 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 33 then # line 838 "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 1551 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 259 then # line 838 "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 1556 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 251 then # line 838 "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 1562 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 270 then # line 838 "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 1638 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 282 then # line 838 "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 1659 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 278 then # line 838 "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 1662 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 768 _goto_level = _again next end end end when 58 then # line 838 "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 1680 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tUNARY_NUM, tok(@ts, @ts + 1), @ts, @ts + 1) p = p - 1; @cs = 768; begin p += 1 _goto_level = _out next end end end when 49 then # line 838 "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 1935 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER, ident_tok, ident_ts, ident_te) p = ident_te - 1 if !@static_env.nil? && @static_env.declared?(ident_tok) && @version < 25 @cs = 439; else @cs = 498; end begin p += 1 _goto_level = _out next end end end when 300 then # line 838 "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 1951 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 372 then # line 838 "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 1978 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 368 then # line 838 "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 1981 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @in_kwarg p = p - 1; begin @cs = 768 _goto_level = _again next end else begin @cs = 182 _goto_level = _again next end end end end when 381 then # line 838 "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 2009 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 378 then # line 838 "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 2012 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 182 _goto_level = _again next end end end when 469 then # line 838 "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 2304 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 398 then # line 838 "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 2307 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 945 _goto_level = _again next end end end when 93 then # line 838 "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 2359 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 250 then # line 1026 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1464 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop emit(:tLAMBEG, '{'.freeze, @te - 1, @te) else emit(:tLCURLY, '{'.freeze, @te - 1, @te) end @cs = 760; begin p += 1 _goto_level = _out next end end end when 272 then # line 1026 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1624 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop emit(:tLAMBEG, '{'.freeze) else emit(:tLBRACE_ARG, '{'.freeze) end @cs = 760; end end when 364 then # line 1026 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 1851 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop emit(:tLAMBEG, '{'.freeze) else emit(:tLBRACE, '{'.freeze) end begin p += 1 _goto_level = _out next end end end when 481 then # line 1026 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) current_literal = literal if current_literal current_literal.start_interp_brace end end # line 2034 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{'.freeze emit(:tLAMBEG, '{'.freeze) else # 'do' emit(:kDO_LAMBDA, 'do'.freeze) end else if tok == '{'.freeze emit(:tLCURLY, '{'.freeze) else # 'do' emit_do end end @cs = 760; begin p += 1 _goto_level = _out next end end end when 482 then # line 1035 "lib/parser/lexer.rl" begin current_literal = literal if current_literal if current_literal.end_interp_brace_and_try_closing if version?(18, 19) emit(:tRCURLY, '}'.freeze, p - 1, p) if @version < 24 @cond.lexpop @cmdarg.lexpop else @cond.pop @cmdarg.pop end else emit(:tSTRING_DEND, '}'.freeze, p - 1, p) end if current_literal.saved_herebody_s @herebody_s = current_literal.saved_herebody_s end p = p - 1; @cs = (next_state_for_literal(current_literal)); begin p += 1 _goto_level = _out next end end end end # line 2260 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) if @version < 24 @cond.lexpop @cmdarg.lexpop else @cond.pop @cmdarg.pop end if tok == '}'.freeze || tok == ']'.freeze if @version >= 25 @cs = 768; else @cs = 504; end else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 60 then # line 1182 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 64 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 491 "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 204 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 219 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1388 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 231 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1420 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 253 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1559 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 768 _goto_level = _again next end end end when 268 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1638 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 280 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1659 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 306 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1951 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 370 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1978 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 380 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2009 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 402 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2304 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 95 then # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2359 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 225 then # line 1226 "lib/parser/lexer.rl" begin tm = p end # line 1410 "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 318 then # line 1226 "lib/parser/lexer.rl" begin tm = p end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 291 then # line 1226 "lib/parser/lexer.rl" begin tm = p end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 395 then # line 1226 "lib/parser/lexer.rl" begin tm = p end # line 1 "NONE" begin case @act when 135 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{'.freeze emit(:tLAMBEG, '{'.freeze) else # 'do' emit(:kDO_LAMBDA, 'do'.freeze) end else if tok == '{'.freeze emit(:tLCURLY, '{'.freeze) else # 'do' emit_do end end @cs = 760; begin p += 1 _goto_level = _out next end end when 136 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 326; begin p += 1 _goto_level = _out next end end when 137 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 760; begin p += 1 _goto_level = _out next end end when 138 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 536; begin p += 1 _goto_level = _out next end end when 139 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 760; begin p += 1 _goto_level = _out next end end when 140 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 512; begin p += 1 _goto_level = _out next end end when 141 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not'.freeze @cs = 536; begin p += 1 _goto_level = _out next end else @cs = 467; begin p += 1 _goto_level = _out next end end end when 142 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) unless !@static_env.nil? && @static_env.declared?(tok) @cs = (arg_or_cmdarg); end else emit(:k__ENCODING__, '__ENCODING__'.freeze) end begin p += 1 _goto_level = _out next end end when 143 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 144 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 146 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i, @ts, @te - 1) p = p - 1; begin p += 1 _goto_level = _out next end end end when 147 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f, @ts, @te - 1) p = p - 1; begin p += 1 _goto_level = _out next end end end when 148 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 150 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 154 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 155 then begin begin p = (( @te))-1; end if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 467; begin p += 1 _goto_level = _out next end end when 156 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION); @cs = 760; begin p += 1 _goto_level = _out next end end when 157 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end end when 226 then # line 1227 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1410 "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 319 then # line 1227 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 293 then # line 1227 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 396 then # line 1227 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2230 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tm == @te # Suffix was consumed, e.g. foo! emit(:tFID) else # Suffix was not consumed, e.g. foo!= emit(:tIDENTIFIER, tok(@ts, tm), @ts, tm) p = tm - 1 end @cs = 467; begin p += 1 _goto_level = _out next end end end when 320 then # line 1232 "lib/parser/lexer.rl" begin tm = p end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 294 then # line 1232 "lib/parser/lexer.rl" begin tm = p end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 321 then # line 1233 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 295 then # line 1233 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 325 then # line 1234 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 298 then # line 1234 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 324 then # line 1235 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 297 then # line 1235 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1 "NONE" begin case @act when 94 then begin begin p = (( @te))-1; end emit(:tUNARY_NUM, tok(@ts, @ts + 1), @ts, @ts + 1) p = p - 1; @cs = 768; begin p += 1 _goto_level = _out next end end when 113 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 114 then begin begin p = (( @te))-1; end emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 512; begin p += 1 _goto_level = _out next end end when 115 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 760; begin p += 1 _goto_level = _out next end end when 117 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 768 _goto_level = _again next end end when 118 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 439; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 122 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 768 _goto_level = _again next end end end end when 322 then # line 1236 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 296 then # line 1236 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1924 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 768 _goto_level = _again next end end end when 323 then # line 1241 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1789 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 768; begin p += 1 _goto_level = _out next end end end when 464 then # line 1246 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2212 "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 249 then # line 1252 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1458 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '['.freeze, @te - 1, @te) @cs = 536; begin p += 1 _goto_level = _out next end end end when 357 then # line 1252 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1863 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '['.freeze) begin p += 1 _goto_level = _out next end end end when 467 then # line 1252 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 2293 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK2, '['.freeze) @cs = 536; begin p += 1 _goto_level = _out next end end end when 241 then # line 1259 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1439 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if version?(18) emit(:tLPAREN2, '('.freeze, @te - 1, @te) @cs = 760; begin p += 1 _goto_level = _out next end else emit(:tLPAREN_ARG, '('.freeze, @te - 1, @te) @cs = 536; begin p += 1 _goto_level = _out next end end end end when 254 then # line 1259 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1452 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2, '('.freeze) @cs = 536; begin p += 1 _goto_level = _out next end end end when 262 then # line 1259 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1578 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '('.freeze, @te - 1, @te) if version?(18) @cs = 760; begin p += 1 _goto_level = _out next end else @cs = 536; begin p += 1 _goto_level = _out next end end end end when 311 then # line 1259 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1868 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN, '('.freeze) begin p += 1 _goto_level = _out next end end end when 408 then # line 1259 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 2256 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 536; begin p += 1 _goto_level = _out next end end end when 409 then # line 1265 "lib/parser/lexer.rl" begin @paren_nest -= 1 end # line 2260 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) if @version < 24 @cond.lexpop @cmdarg.lexpop else @cond.pop @cmdarg.pop end if tok == '}'.freeze || tok == ']'.freeze if @version >= 25 @cs = 768; else @cs = 504; end else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 70 then # line 1729 "lib/parser/lexer.rl" begin heredoc_e = p end # line 491 "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 328 then # line 1730 "lib/parser/lexer.rl" begin new_herebody_s = p end # line 1731 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin tok(@ts, heredoc_e) =~ /^<<(-?)(~?)(["'`]?)(.*)\3$/m indent = !$1.empty? || !$2.empty? dedent_body = !$2.empty? type = $3.empty? ? '<<"'.freeze : ('<<'.freeze + $3) delimiter = $4 if @version >= 24 if delimiter.count("\n") > 0 if delimiter.end_with?("\n") diagnostic :warning, :heredoc_id_ends_with_nl, nil, range(@ts, @ts + 1) delimiter = delimiter.rstrip else diagnostic :fatal, :heredoc_id_has_newline, nil, range(@ts, @ts + 1) end end end if dedent_body && version?(18, 19, 20, 21, 22) emit(:tLSHFT, '<<'.freeze, @ts, @ts + 2) p = @ts + 1 @cs = 536; begin p += 1 _goto_level = _out next end else @cs = (push_literal(type, delimiter, @ts, heredoc_e, indent, dedent_body)); @herebody_s ||= new_herebody_s p = @herebody_s - 1 end end end when 333 then # line 1809 "lib/parser/lexer.rl" begin @escape = nil end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 360 then # line 1878 "lib/parser/lexer.rl" begin tm = p end # line 1879 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 512; begin p += 1 _goto_level = _out next end end end when 453 then # line 2114 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 445 then # line 2115 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 449 then # line 2116 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 441 then # line 2117 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 460 then # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 418 then # line 2119 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 462 then # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 86 then # line 2330 "lib/parser/lexer.rl" begin tm = p end # line 2331 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 768 _goto_level = _again next end end end when 8 then # line 1 "NONE" begin @te = p+1 end # line 491 "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 433 then # line 1 "NONE" begin @te = p+1 end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 423 then # line 1 "NONE" begin @te = p+1 end # line 2178 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 210 then # line 1 "NONE" begin @te = p+1 end # line 1329 "lib/parser/lexer.rl" begin @act = 39; end when 197 then # line 1 "NONE" begin @te = p+1 end # line 1333 "lib/parser/lexer.rl" begin @act = 40; end when 193 then # line 1 "NONE" begin @te = p+1 end # line 1337 "lib/parser/lexer.rl" begin @act = 41; end when 26 then # line 1 "NONE" begin @te = p+1 end # line 1499 "lib/parser/lexer.rl" begin @act = 67; end when 243 then # line 1 "NONE" begin @te = p+1 end # line 1512 "lib/parser/lexer.rl" begin @act = 68; end when 27 then # line 1 "NONE" begin @te = p+1 end # line 1551 "lib/parser/lexer.rl" begin @act = 73; end when 236 then # line 1 "NONE" begin @te = p+1 end # line 1556 "lib/parser/lexer.rl" begin @act = 74; end when 263 then # line 1 "NONE" begin @te = p+1 end # line 1588 "lib/parser/lexer.rl" begin @act = 80; end when 45 then # line 1 "NONE" begin @te = p+1 end # line 1601 "lib/parser/lexer.rl" begin @act = 81; end when 284 then # line 1 "NONE" begin @te = p+1 end # line 1653 "lib/parser/lexer.rl" begin @act = 88; end when 273 then # line 1 "NONE" begin @te = p+1 end # line 1657 "lib/parser/lexer.rl" begin @act = 89; end when 287 then # line 1 "NONE" begin @te = p+1 end # line 1873 "lib/parser/lexer.rl" begin @act = 113; end when 359 then # line 1 "NONE" begin @te = p+1 end # line 1879 "lib/parser/lexer.rl" begin @act = 114; end when 358 then # line 1 "NONE" begin @te = p+1 end # line 1885 "lib/parser/lexer.rl" begin @act = 115; end when 72 then # line 1 "NONE" begin @te = p+1 end # line 1924 "lib/parser/lexer.rl" begin @act = 117; end when 285 then # line 1 "NONE" begin @te = p+1 end # line 1270 "lib/parser/lexer.rl" begin @act = 118; end when 288 then # line 1 "NONE" begin @te = p+1 end # line 1970 "lib/parser/lexer.rl" begin @act = 122; end when 477 then # line 1 "NONE" begin @te = p+1 end # line 2034 "lib/parser/lexer.rl" begin @act = 135; end when 472 then # line 1 "NONE" begin @te = p+1 end # line 2059 "lib/parser/lexer.rl" begin @act = 136; end when 480 then # line 1 "NONE" begin @te = p+1 end # line 2069 "lib/parser/lexer.rl" begin @act = 138; end when 473 then # line 1 "NONE" begin @te = p+1 end # line 2074 "lib/parser/lexer.rl" begin @act = 139; end when 474 then # line 1 "NONE" begin @te = p+1 end # line 2078 "lib/parser/lexer.rl" begin @act = 140; end when 479 then # line 1 "NONE" begin @te = p+1 end # line 2082 "lib/parser/lexer.rl" begin @act = 141; end when 471 then # line 1 "NONE" begin @te = p+1 end # line 2093 "lib/parser/lexer.rl" begin @act = 142; end when 466 then # line 1 "NONE" begin @te = p+1 end # line 2107 "lib/parser/lexer.rl" begin @act = 143; end when 388 then # line 1 "NONE" begin @te = p+1 end # line 2121 "lib/parser/lexer.rl" begin @act = 144; end when 421 then # line 1 "NONE" begin @te = p+1 end # line 2165 "lib/parser/lexer.rl" begin @act = 147; end when 79 then # line 1 "NONE" begin @te = p+1 end # line 2180 "lib/parser/lexer.rl" begin @act = 148; end when 391 then # line 1 "NONE" begin @te = p+1 end # line 2208 "lib/parser/lexer.rl" begin @act = 150; end when 382 then # line 1 "NONE" begin @te = p+1 end # line 1270 "lib/parser/lexer.rl" begin @act = 154; end when 394 then # line 1 "NONE" begin @te = p+1 end # line 2230 "lib/parser/lexer.rl" begin @act = 155; end when 386 then # line 1 "NONE" begin @te = p+1 end # line 2250 "lib/parser/lexer.rl" begin @act = 156; end when 393 then # line 1 "NONE" begin @te = p+1 end # line 2256 "lib/parser/lexer.rl" begin @act = 157; end when 167 then # line 491 "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 926 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, ''.freeze) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, ''.freeze) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 424 then # line 2177 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 632 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 420 then # line 2178 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 632 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 258 then # line 1 "NONE" begin @te = p+1 end # line 491 "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 1556 "lib/parser/lexer.rl" begin @act = 74; end when 35 then # line 1 "NONE" begin @te = p+1 end # line 838 "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 1551 "lib/parser/lexer.rl" begin @act = 73; end when 46 then # line 1 "NONE" begin @te = p+1 end # line 838 "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 1601 "lib/parser/lexer.rl" begin @act = 81; end when 65 then # line 1 "NONE" begin @te = p+1 end # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1680 "lib/parser/lexer.rl" begin @act = 94; end when 82 then # line 1 "NONE" begin @te = p+1 end # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2063 "lib/parser/lexer.rl" begin @act = 137; end when 37 then # line 1 "NONE" begin @te = p+1 end # line 1511 "lib/parser/lexer.rl" begin tm = p end # line 1512 "lib/parser/lexer.rl" begin @act = 68; end when 362 then # line 1 "NONE" begin @te = p+1 end # line 1878 "lib/parser/lexer.rl" begin tm = p end # line 1924 "lib/parser/lexer.rl" begin @act = 117; end when 361 then # line 1 "NONE" begin @te = p+1 end # line 1878 "lib/parser/lexer.rl" begin tm = p end # line 1270 "lib/parser/lexer.rl" begin @act = 118; end when 454 then # line 1 "NONE" begin @te = p+1 end # line 2114 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 446 then # line 1 "NONE" begin @te = p+1 end # line 2115 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 450 then # line 1 "NONE" begin @te = p+1 end # line 2116 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 442 then # line 1 "NONE" begin @te = p+1 end # line 2117 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 461 then # line 1 "NONE" begin @te = p+1 end # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 457 then # line 1 "NONE" begin @te = p+1 end # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2121 "lib/parser/lexer.rl" begin @act = 144; end when 419 then # line 1 "NONE" begin @te = p+1 end # line 2119 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 118 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 145 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 346 then # line 695 "lib/parser/lexer.rl" begin codepoint = @source_pts[p - 1] if (@escape = ESCAPES[codepoint]).nil? @escape = encode_escape(@source_buffer.slice(p - 1)) end end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 116 then # line 722 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 143 then # line 722 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 871 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal # Get the first character after the backslash. escaped_char = @source_buffer.slice(@escape_s).chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) elsif current_literal.heredoc? && escaped_char == "\n".freeze if current_literal.squiggly_heredoc? # Squiggly heredocs like # <<~-HERE # 1\ # 2 # HERE # treat '\' as a line continuation, but still dedent the body, so the heredoc above becomes "12\n". # This information is emitted as is, without escaping, # later this escape sequence (\\n) gets handled manually in the Lexer::Dedenter current_literal.extend_string(tok, @ts, @te) else # Plain heredocs also parse \\n as a line continuation, # but they don't need to know that there was originally a newline in the # code, so we escape it and emit as " 1 2\n" current_literal.extend_string(tok.gsub("\\\n".freeze, ''.freeze), @ts, @te) end else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 344 then # line 722 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 706 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 710 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value.getbyte(0)) else emit(:tCHARACTER, value) end @cs = 768; begin p += 1 _goto_level = _out next end end end when 451 then # line 2114 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 443 then # line 2115 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 447 then # line 2116 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 439 then # line 2117 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 455 then # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 414 then # line 2119 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2121 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? '_'.freeze diagnostic :error, :trailing_in_number, { :character => '_'.freeze }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = '0'.freeze elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base), @ts, @num_suffix_s) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 31 then # line 1 "NONE" begin @te = p+1 end # line 838 "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 1511 "lib/parser/lexer.rl" begin tm = p end # line 1512 "lib/parser/lexer.rl" begin @act = 68; end when 62 then # line 1 "NONE" begin @te = p+1 end # line 1182 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1185 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1680 "lib/parser/lexer.rl" begin @act = 94; end when 463 then # line 1 "NONE" begin @te = p+1 end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2153 "lib/parser/lexer.rl" begin @act = 146; end when 458 then # line 1 "NONE" begin @te = p+1 end # line 2118 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2153 "lib/parser/lexer.rl" begin @act = 146; end when 417 then # line 1 "NONE" begin @te = p+1 end # line 2119 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2120 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 624 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2153 "lib/parser/lexer.rl" begin @act = 146; end # line 22835 "lib/parser/lexer.rb" end end end if _goto_level <= _again case _lex_to_state_actions[ @cs] when 88 then # line 1 "NONE" begin @ts = nil; end # line 22845 "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 283 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == klass.lex_error [ false, [ '$error'.freeze, range(p - 1, p) ] ] else eof = @source_pts.size [ false, [ '$eof'.freeze, range(eof, eof) ] ] end end protected def eof_codepoint?(point) [0x04, 0x1a, 0x00].include? point end def version?(*versions) versions.include?(@version) end def stack_pop @top -= 1 @stack[@top] end def encode_escape(ord) ord.chr.force_encoding(@source_buffer.source.encoding) end def tok(s = @ts, e = @te) @source_buffer.slice(s...e) 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, 'do'.freeze) elsif @cmdarg.active? || do_block emit(:kDO_BLOCK, 'do'.freeze) else emit(:kDO, 'do'.freeze) end end def arg_or_cmdarg if @command_state self.class.lex_en_expr_cmdarg else self.class.lex_en_expr_arg end end def emit_comment(s = @ts, e = @te) if @comments @comments.push(Parser::Source::Comment.new(range(s, e))) end if @tokens @tokens.push([ :tCOMMENT, [ tok(s, e), range(s, e) ] ]) end nil end def diagnostic(type, reason, arguments=nil, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, reason, arguments, location, highlights)) end # # === LITERAL STACK === # def push_literal(*args) new_literal = Literal.new(self, *args) @literal_stack.push(new_literal) next_state_for_literal(new_literal) end def next_state_for_literal(literal) if literal.words? && literal.backslash_delimited? if literal.interpolate? self.class.lex_en_interp_backslash_delimited_words else self.class.lex_en_plain_backslash_delimited_words end elsif literal.words? && !literal.backslash_delimited? if literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end elsif !literal.words? && literal.backslash_delimited? if literal.interpolate? self.class.lex_en_interp_backslash_delimited else self.class.lex_en_plain_backslash_delimited end else if 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 @dedent_level = old_literal.dedent_level if old_literal.type == :tREGEXP_BEG # Fetch modifiers. self.class.lex_en_regexp_modifiers else self.class.lex_en_expr_end end end # Mapping of strings to parser tokens. PUNCTUATION = { '=' => :tEQL, '&' => :tAMPER2, '|' => :tPIPE, '!' => :tBANG, '^' => :tCARET, '+' => :tPLUS, '-' => :tMINUS, '*' => :tSTAR2, '/' => :tDIVIDE, '%' => :tPERCENT, '~' => :tTILDE, ',' => :tCOMMA, ';' => :tSEMI, '.' => :tDOT, '..' => :tDOT2, '...' => :tDOT3, '[' => :tLBRACK2, ']' => :tRBRACK, '(' => :tLPAREN2, ')' => :tRPAREN, '?' => :tEH, ':' => :tCOLON, '&&' => :tANDOP, '||' => :tOROP, '-@' => :tUMINUS, '+@' => :tUPLUS, '~@' => :tTILDE, '**' => :tPOW, '->' => :tLAMBDA, '=~' => :tMATCH, '!~' => :tNMATCH, '==' => :tEQ, '!=' => :tNEQ, '>' => :tGT, '>>' => :tRSHFT, '>=' => :tGEQ, '<' => :tLT, '<<' => :tLSHFT, '<=' => :tLEQ, '=>' => :tASSOC, '::' => :tCOLON2, '===' => :tEQQ, '<=>' => :tCMP, '[]' => :tAREF, '[]=' => :tASET, '{' => :tLCURLY, '}' => :tRCURLY, '`' => :tBACK_REF2, '!@' => :tBANG, '&.' => :tANDDOT, } PUNCTUATION_BEGIN = { '&' => :tAMPER, '*' => :tSTAR, '**' => :tDSTAR, '+' => :tUPLUS, '-' => :tUMINUS, '::' => :tCOLON3, '(' => :tLPAREN, '{' => :tLBRACE, '[' => :tLBRACK, } KEYWORDS = { 'if' => :kIF_MOD, 'unless' => :kUNLESS_MOD, 'while' => :kWHILE_MOD, 'until' => :kUNTIL_MOD, 'rescue' => :kRESCUE_MOD, 'defined?' => :kDEFINED, 'BEGIN' => :klBEGIN, 'END' => :klEND, } KEYWORDS_BEGIN = { 'if' => :kIF, 'unless' => :kUNLESS, 'while' => :kWHILE, 'until' => :kUNTIL, 'rescue' => :kRESCUE, 'defined?' => :kDEFINED, 'BEGIN' => :klBEGIN, 'END' => :klEND, } %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 2374 "lib/parser/lexer.rl" # % end