# -*- 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, 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, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 93, 93, 0, 127, 0, 127, 10, 10, 10, 34, 10, 10, 10, 39, 0, 127, 10, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 0, 48, 102, 0, 0, 0, 92, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 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, 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, 48, 61, 48, 62, 46, 46, 46, 46, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 124, 124, 60, 61, 0, 0, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 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, 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, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0 ] class << self attr_accessor :_lex_key_spans private :_lex_key_spans, :_lex_key_spans= end self._lex_key_spans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 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, 1, 1, 1, 1, 1, 1, 123, 1, 128, 128, 66, 128, 128, 1, 128, 128, 1, 25, 1, 30, 128, 87, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 55, 0, 93, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 126, 0, 55, 0, 93, 24, 27, 93, 27, 36, 88, 128, 10, 27, 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, 14, 15, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 1, 2, 0, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 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, 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, 0, 1, 0, 67, 67, 67, 67, 10, 0, 1, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3669, 3798, 3927, 3955, 4084, 4086, 4088, 4217, 4219, 4221, 4223, 4225, 4354, 4483, 4612, 4741, 4870, 4999, 5128, 5257, 5386, 5515, 5644, 5773, 5902, 6031, 6160, 6289, 6418, 6547, 6549, 6551, 6553, 6555, 6565, 6567, 6569, 6571, 6573, 6575, 6577, 6579, 6581, 6710, 6712, 6841, 6843, 6845, 6847, 6849, 6851, 6853, 6977, 6979, 7108, 7237, 7304, 7433, 7562, 7564, 7693, 7822, 7824, 7850, 7852, 7883, 8012, 8100, 8147, 8226, 8305, 8399, 8427, 8455, 8502, 8603, 8631, 8665, 8667, 8761, 8840, 8944, 9073, 9202, 9331, 9460, 9589, 9718, 9720, 9722, 9851, 9867, 9878, 9889, 9900, 9911, 10040, 10042, 10127, 10212, 10297, 10382, 10467, 10552, 10554, 10556, 10595, 10597, 10694, 10719, 10720, 10722, 10724, 10726, 10751, 10753, 10755, 10849, 10874, 10963, 11092, 11103, 11225, 11226, 11227, 11236, 11245, 11246, 11247, 11341, 11342, 11343, 11344, 11438, 11440, 11441, 11442, 11443, 11537, 11584, 11678, 11772, 11773, 11774, 11868, 11915, 11917, 12011, 12136, 12164, 12192, 12220, 12221, 12325, 12429, 12533, 12534, 12661, 12788, 12915, 13042, 13169, 13170, 13297, 13424, 13425, 13552, 13580, 13707, 13834, 13961, 14088, 14215, 14342, 14469, 14596, 14723, 14724, 14851, 14852, 14908, 14909, 15003, 15092, 15221, 15232, 15354, 15355, 15356, 15365, 15374, 15375, 15376, 15470, 15471, 15472, 15473, 15567, 15569, 15570, 15571, 15572, 15666, 15713, 15807, 15901, 15902, 15903, 15997, 16044, 16046, 16140, 16265, 16293, 16321, 16349, 16350, 16454, 16558, 16662, 16663, 16790, 16917, 17044, 17171, 17298, 17299, 17426, 17553, 17554, 17681, 17709, 17836, 17963, 18090, 18217, 18344, 18471, 18598, 18725, 18852, 18853, 18980, 18981, 19037, 19038, 19132, 19157, 19185, 19279, 19307, 19344, 19433, 19562, 19573, 19601, 19660, 19719, 19749, 19878, 19889, 20018, 20147, 20276, 20405, 20430, 20431, 20498, 20500, 20502, 20631, 20760, 20771, 20773, 20775, 20777, 20779, 20781, 20784, 20786, 20853, 20855, 20858, 20987, 21116, 21245, 21374, 21503, 21632, 21761, 21763, 21765, 21894, 22023, 22152, 22281, 22410, 22539, 22668, 22797, 22926, 23055, 23184, 23313, 23442, 23571, 23700, 23829, 23958, 24087, 24216, 24345, 24474, 24603, 24732, 24861, 24990, 25119, 25248, 25377, 25506, 25635, 25764, 25893, 26022, 26151, 26280, 26409, 26538, 26667, 26796, 26925, 27054, 27183, 27312, 27441, 27570, 27699, 27828, 27957, 28086, 28215, 28344, 28473, 28602, 28731, 28860, 28989, 29118, 29247, 29376, 29505, 29634, 29763, 29892, 30021, 30150, 30279, 30408, 30537, 30666, 30795, 30924, 31053, 31182, 31311, 31440, 31569, 31698, 31827, 31956, 32085, 32214, 32343, 32472, 32474, 32603, 32732, 32757, 32759, 32761, 32763, 32764, 32893, 33022, 33024, 33025, 33050, 33051, 33118, 33120, 33122, 33124, 33126, 33128, 33131, 33133, 33200, 33202, 33205, 33334, 33336, 33338, 33340, 33468, 33597, 33660, 33714, 33768, 33769, 33823, 33878, 33880, 33882, 33884, 33909, 33910, 34039, 34040, 34157, 34158, 34160, 34162, 34163, 34217, 34219, 34221, 34223, 34248, 34250, 34379, 34381, 34383, 34385, 34387, 34516, 34645, 34774, 34775, 34904, 34906, 35031, 35056, 35058, 35060, 35062, 35063, 35065, 35066, 35195, 35324, 35349, 35350, 35352, 35354, 35356, 35357, 35486, 35615, 35744, 35873, 36002, 36131, 36260, 36389, 36518, 36647, 36776, 36905, 37034, 37163, 37292, 37421, 37550, 37679, 37684, 37685, 37752, 37754, 37755, 37756, 37757, 37782, 37784, 37809, 37876, 37878, 37880, 37939, 38063, 38088, 38089, 38110, 38112, 38127, 38143, 38145, 38147, 38175, 38304, 38433, 38435, 38436, 38503, 38506, 38507, 38508, 38509, 38510, 38577, 38706, 38717, 38719, 38721, 38723, 38726, 38728, 38730, 38733, 38735, 38738, 38739, 38741, 38808, 38811, 38935, 38936, 39065, 39194, 39316, 39317, 39318, 39327, 39336, 39337, 39338, 39432, 39433, 39434, 39435, 39529, 39531, 39532, 39533, 39534, 39628, 39675, 39769, 39863, 39864, 39865, 39959, 40006, 40008, 40102, 40227, 40255, 40283, 40311, 40312, 40416, 40520, 40624, 40625, 40752, 40879, 41006, 41133, 41260, 41261, 41388, 41515, 41516, 41643, 41671, 41798, 41925, 42052, 42179, 42306, 42433, 42560, 42687, 42814, 42941, 43068, 43195, 43322, 43449, 43450, 43451, 43507, 43508, 43637, 43766, 43895, 43896, 43898, 43899, 44028, 44157, 44286, 44415, 44544, 44673, 44802, 44931, 45060, 45189, 45318, 45447, 45576, 45705, 45834, 45963, 46092, 46221, 46350, 46479, 46608, 46737, 46866, 46995, 47124, 47253, 47382, 47511, 47640, 47769, 47898, 48027, 48156, 48285, 48414, 48543, 48672, 48801, 48930, 49059, 49188, 49317, 49446, 49575, 49704, 49833, 49962, 50091, 50220, 50349, 50478, 50607, 50736, 50865, 50994, 51123, 51252, 51381, 51510, 51639, 51706, 51835, 51964, 52093, 52222, 52351, 52480, 52609, 52738, 52867, 52996, 53125, 53254, 53383, 53512, 53641, 53770, 53899, 54028, 54157, 54286, 54415, 54544, 54673, 54802, 54931, 54932, 54997, 55091, 55116, 55117, 55119, 55121, 55123, 55124, 55253, 55382, 55407, 55408, 55410, 55412, 55414, 55415, 55544, 55673, 55675, 55676, 55701, 55702, 55769, 55771, 55773, 55902, 56031, 56042, 56044, 56069, 56070, 56071, 56092, 56095, 56108, 56110, 56165, 56214, 56290, 56358, 56374, 56433, 56434, 56436, 56437, 56505, 56573, 56641, 56709, 56720, 56721, 56723, 56724, 56792, 56860, 56928, 56996, 57064, 57132, 57200, 57268, 57338, 57406, 57476, 57544, 57546, 57549, 57551, 57618, 57620, 57623, 57752, 57881, 57882, 58011, 58140, 58269, 58398, 58527, 58656, 58657, 58659, 58660, 58789, 58918, 59047, 59176, 59305, 59434, 59563, 59692, 59821, 59950, 60079, 60208, 60337, 60466, 60595, 60724, 60853, 60982, 61111, 61240, 61369, 61498, 61627, 61756, 61885, 62014, 62143, 62272, 62401, 62530, 62659, 62788, 62917, 63046, 63175, 63304, 63433, 63518, 63647, 63776, 63905, 64034, 64163, 64292, 64421, 64550, 64679, 64808, 64937, 65066, 65195, 65324, 65453, 65582, 65711, 65840, 65969, 66098, 66227, 66356, 66485, 66614, 66743, 66872, 67001, 67130, 67259, 67388, 67517, 67646, 67775, 67904, 68033, 68162, 68291, 68420, 68549, 68678, 68807, 68936, 69065, 69194, 69323, 69452, 69581, 69710, 69839, 69968, 70097, 70226, 70355, 70484, 70613, 70742, 70871, 71000, 71129, 71258, 71387, 71516, 71645, 71774, 71903, 71904, 71969, 71970, 72009, 72048, 72050, 72103, 72105, 72198, 72300, 72392 ] 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, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 81, 81, 82, 81, 82, 81, 81, 82, 82, 81, 81, 81, 83, 81, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 81, 81, 81, 81, 81, 81, 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, 82, 81, 82, 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, 82, 82, 82, 81, 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, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 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, 82, 82, 82, 82, 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, 82, 82, 82, 82, 82, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 82, 82, 82, 82, 82, 82, 86, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 82, 82, 82, 82, 85, 82, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 82, 82, 82, 82, 82, 85, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 82, 82, 82, 82, 82, 82, 82, 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, 82, 82, 82, 82, 87, 82, 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, 82, 82, 82, 82, 82, 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, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 89, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 89, 90, 91, 91, 91, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 90, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 94, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 95, 92, 92, 92, 92, 94, 92, 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, 92, 92, 92, 92, 93, 92, 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, 92, 92, 92, 92, 92, 93, 95, 92, 92, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 99, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 97, 97, 97, 97, 99, 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, 97, 97, 97, 97, 98, 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, 97, 97, 97, 97, 97, 98, 100, 97, 102, 101, 103, 101, 104, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 106, 101, 106, 106, 106, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 106, 101, 101, 101, 101, 107, 108, 101, 109, 101, 110, 111, 112, 113, 114, 107, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 115, 101, 116, 112, 117, 118, 101, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 119, 120, 112, 121, 105, 101, 105, 105, 105, 105, 105, 105, 105, 105, 122, 105, 105, 105, 105, 105, 105, 105, 105, 123, 105, 105, 124, 105, 125, 105, 105, 105, 126, 127, 101, 121, 101, 105, 101, 101, 101, 101, 101, 101, 101, 101, 101, 128, 101, 128, 128, 128, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 128, 101, 101, 101, 101, 129, 130, 101, 131, 101, 132, 133, 134, 135, 136, 129, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 137, 101, 138, 134, 139, 140, 101, 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, 141, 142, 134, 103, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 143, 98, 98, 98, 98, 98, 98, 98, 98, 144, 98, 98, 145, 98, 146, 98, 98, 98, 147, 148, 101, 103, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 149, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 150, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 151, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 152, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 153, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 149, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 154, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 155, 98, 98, 98, 98, 98, 98, 98, 156, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 157, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 158, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 149, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 159, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 149, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 160, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 161, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 101, 101, 101, 101, 99, 101, 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, 101, 101, 101, 101, 98, 101, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 153, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 101, 101, 101, 101, 101, 98, 163, 162, 164, 162, 165, 162, 134, 162, 166, 162, 162, 162, 162, 162, 162, 162, 167, 162, 168, 162, 169, 162, 134, 162, 170, 162, 134, 162, 171, 162, 165, 162, 173, 172, 174, 174, 174, 174, 174, 174, 174, 174, 174, 176, 174, 176, 176, 176, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 176, 174, 174, 174, 174, 174, 174, 174, 177, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 174, 178, 174, 174, 175, 174, 175, 175, 175, 179, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 174, 174, 174, 174, 174, 175, 180, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 182, 174, 182, 182, 182, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 182, 174, 174, 174, 174, 174, 174, 174, 183, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 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, 174, 184, 174, 174, 181, 174, 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, 174, 174, 174, 174, 174, 181, 186, 187, 189, 188, 190, 188, 191, 188, 192, 188, 193, 188, 194, 195, 195, 195, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 195, 197, 186, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 200, 200, 198, 200, 198, 200, 200, 198, 198, 200, 200, 200, 201, 200, 200, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 200, 200, 200, 200, 200, 200, 200, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 200, 198, 198, 199, 200, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 200, 198, 199, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 198, 198, 198, 198, 198, 198, 198, 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, 198, 198, 198, 198, 200, 198, 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, 198, 198, 198, 198, 198, 200, 203, 200, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 200, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 204, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 199, 198, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 199, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 199, 198, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 199, 203, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 206, 198, 198, 198, 198, 207, 198, 198, 198, 198, 198, 208, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 197, 198, 198, 198, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 198, 198, 198, 198, 205, 209, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 198, 198, 198, 208, 198, 205, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 212, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 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, 211, 211, 211, 211, 210, 211, 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, 211, 211, 211, 211, 211, 210, 214, 213, 198, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 215, 206, 212, 211, 198, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 215, 207, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 206, 198, 198, 198, 198, 207, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 198, 198, 198, 198, 205, 209, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 198, 198, 198, 198, 198, 205, 198, 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, 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, 209, 209, 209, 209, 209, 209, 209, 209, 209, 215, 209, 216, 217, 217, 217, 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 217, 216, 219, 219, 219, 216, 219, 219, 219, 219, 219, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 216, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 221, 219, 216, 219, 219, 219, 216, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 216, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 222, 219, 216, 223, 223, 223, 216, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 216, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 216, 226, 226, 226, 216, 226, 226, 226, 226, 226, 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 216, 226, 216, 226, 226, 226, 216, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 216, 226, 216, 217, 217, 217, 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 228, 217, 216, 229, 229, 229, 216, 229, 229, 229, 229, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 216, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 231, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 229, 229, 229, 229, 229, 229, 233, 229, 216, 229, 229, 229, 216, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 216, 229, 234, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 235, 216, 235, 216, 216, 236, 236, 236, 216, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 216, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 238, 236, 216, 219, 219, 219, 216, 219, 219, 219, 219, 219, 220, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 216, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 222, 219, 216, 239, 239, 239, 216, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 216, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 239, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 242, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 186, 186, 244, 186, 242, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 186, 186, 186, 186, 241, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 186, 186, 186, 186, 186, 241, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 242, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 198, 198, 244, 198, 242, 198, 241, 241, 241, 241, 241, 241, 245, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 241, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 198, 241, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 242, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 198, 198, 244, 198, 242, 198, 241, 241, 241, 241, 241, 241, 241, 241, 246, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 241, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 198, 241, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 242, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 198, 198, 244, 198, 242, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 247, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 241, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 198, 241, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 242, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 198, 198, 244, 198, 242, 198, 241, 241, 241, 247, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 241, 198, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 198, 198, 198, 198, 198, 241, 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, 250, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 251, 248, 248, 248, 248, 250, 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 249, 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 249, 251, 248, 248, 252, 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, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 254, 256, 255, 256, 255, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 255, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 255, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 255, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 259, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 259, 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, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 253, 253, 253, 253, 253, 253, 253, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 253, 253, 253, 253, 262, 253, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 253, 253, 253, 253, 253, 262, 263, 259, 264, 265, 264, 264, 264, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 264, 259, 259, 266, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 267, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 268, 259, 269, 270, 269, 269, 269, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 269, 259, 259, 271, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 272, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 273, 259, 275, 276, 275, 275, 275, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 274, 274, 277, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 278, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 279, 274, 281, 282, 281, 281, 281, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 283, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 284, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 285, 280, 281, 282, 281, 281, 281, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 283, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 286, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 285, 280, 281, 287, 281, 281, 281, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 283, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 284, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 285, 280, 288, 259, 265, 259, 290, 289, 290, 290, 290, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 290, 289, 289, 289, 289, 289, 291, 289, 289, 289, 289, 289, 289, 289, 292, 289, 293, 289, 295, 294, 294, 294, 295, 294, 294, 294, 294, 296, 297, 296, 296, 296, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 294, 294, 294, 294, 294, 296, 294, 294, 298, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 299, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 300, 294, 294, 301, 294, 296, 302, 296, 296, 296, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 296, 302, 303, 304, 305, 306, 307, 309, 308, 311, 312, 311, 311, 311, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 311, 310, 297, 308, 313, 308, 315, 314, 314, 314, 315, 314, 314, 314, 314, 316, 317, 316, 316, 316, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 315, 314, 314, 314, 314, 314, 316, 314, 314, 318, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 319, 314, 316, 320, 316, 316, 316, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, 316, 320, 322, 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, 323, 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, 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, 324, 321, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 325, 325, 325, 325, 325, 325, 325, 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, 325, 325, 325, 325, 13, 325, 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, 325, 325, 325, 325, 325, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 325, 328, 327, 327, 327, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 329, 329, 329, 329, 329, 329, 329, 329, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 330, 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, 332, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 333, 327, 327, 334, 327, 335, 336, 338, 338, 338, 338, 338, 338, 338, 338, 337, 339, 339, 339, 339, 339, 339, 339, 339, 337, 337, 340, 340, 38, 38, 38, 340, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 340, 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, 341, 38, 342, 343, 344, 344, 38, 38, 38, 344, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 344, 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, 345, 38, 37, 344, 346, 347, 348, 348, 25, 25, 25, 348, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 348, 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, 349, 25, 344, 19, 19, 19, 344, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 344, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 350, 19, 340, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 340, 351, 351, 351, 340, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 340, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 352, 351, 353, 354, 354, 351, 351, 351, 354, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 354, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 355, 351, 354, 19, 19, 19, 354, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 354, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 350, 19, 356, 354, 354, 25, 25, 25, 354, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 354, 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, 357, 358, 358, 358, 357, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 357, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 358, 358, 358, 358, 358, 358, 358, 359, 359, 359, 359, 359, 359, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, 359, 359, 359, 359, 359, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 360, 358, 357, 361, 361, 361, 357, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 357, 361, 357, 362, 362, 362, 357, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 357, 362, 357, 363, 363, 363, 357, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 357, 363, 357, 357, 361, 361, 361, 357, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 357, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 361, 361, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 364, 364, 364, 364, 364, 364, 361, 357, 362, 362, 362, 357, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 357, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 365, 365, 365, 365, 365, 365, 362, 357, 363, 363, 363, 357, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 357, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, 363, 363, 363, 363, 363, 363, 363, 366, 366, 366, 366, 366, 366, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 366, 366, 366, 366, 366, 366, 363, 367, 370, 369, 369, 369, 370, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 371, 371, 371, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 371, 371, 371, 371, 371, 371, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 361, 369, 370, 372, 372, 372, 370, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 370, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 373, 373, 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, 373, 373, 373, 373, 373, 373, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 374, 372, 370, 375, 375, 375, 370, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 370, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 377, 375, 370, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 380, 370, 379, 379, 379, 370, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 370, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, 379, 370, 379, 379, 379, 370, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 370, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 368, 379, 368, 370, 376, 376, 376, 370, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 370, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 363, 376, 368, 363, 363, 363, 368, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 368, 363, 370, 372, 372, 372, 370, 372, 372, 372, 372, 381, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 370, 372, 372, 372, 372, 372, 381, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 372, 372, 372, 372, 372, 372, 372, 382, 382, 382, 382, 382, 382, 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, 382, 382, 382, 382, 382, 382, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 383, 372, 370, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 378, 378, 378, 378, 378, 378, 378, 384, 384, 384, 384, 384, 384, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 384, 384, 384, 384, 384, 384, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 378, 378, 378, 378, 378, 378, 378, 385, 385, 385, 385, 385, 385, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 385, 385, 385, 385, 385, 385, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 378, 378, 378, 378, 378, 378, 378, 386, 386, 386, 386, 386, 386, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 386, 386, 386, 386, 386, 386, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 378, 378, 378, 378, 378, 378, 378, 387, 387, 387, 387, 387, 387, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 387, 387, 387, 387, 387, 387, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 388, 388, 388, 388, 388, 388, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 378, 378, 378, 378, 378, 378, 378, 389, 389, 389, 389, 389, 389, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 389, 389, 389, 389, 389, 389, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 381, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 383, 378, 370, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 390, 390, 390, 390, 390, 390, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 380, 378, 391, 370, 375, 375, 375, 370, 375, 375, 375, 375, 381, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 370, 375, 375, 375, 375, 375, 381, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 375, 375, 375, 375, 375, 375, 375, 386, 386, 386, 386, 386, 386, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 386, 386, 386, 386, 386, 386, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 383, 375, 392, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 393, 393, 393, 393, 393, 393, 393, 394, 394, 394, 394, 394, 394, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, 394, 394, 394, 394, 394, 394, 393, 393, 396, 395, 395, 395, 396, 395, 395, 395, 395, 395, 397, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 396, 395, 395, 395, 395, 395, 395, 395, 395, 398, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 399, 395, 401, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 402, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 403, 400, 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, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 404, 404, 404, 404, 404, 404, 404, 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, 404, 404, 404, 404, 44, 404, 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, 404, 404, 404, 404, 404, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 404, 407, 406, 406, 406, 407, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 407, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 408, 408, 408, 408, 408, 408, 408, 408, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 409, 406, 406, 406, 406, 406, 406, 406, 406, 406, 410, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 411, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 412, 406, 406, 413, 406, 414, 415, 417, 417, 417, 417, 417, 417, 417, 417, 416, 418, 418, 418, 418, 418, 418, 418, 418, 416, 416, 419, 419, 69, 69, 69, 419, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 419, 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, 420, 69, 421, 422, 423, 423, 69, 69, 69, 423, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 423, 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, 424, 69, 68, 423, 425, 426, 427, 427, 56, 56, 56, 427, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 427, 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, 428, 56, 423, 50, 50, 50, 423, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 423, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 429, 50, 419, 56, 56, 56, 419, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 419, 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, 419, 430, 430, 430, 419, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 419, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 431, 430, 432, 433, 433, 430, 430, 430, 433, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 433, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 434, 430, 433, 50, 50, 50, 433, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 433, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 429, 50, 435, 433, 433, 56, 56, 56, 433, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 433, 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, 436, 437, 437, 437, 436, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 436, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, 438, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 439, 437, 436, 440, 440, 440, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 436, 440, 436, 441, 441, 441, 436, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 436, 441, 436, 442, 442, 442, 436, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 436, 442, 436, 436, 440, 440, 440, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 436, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 440, 440, 440, 440, 440, 440, 440, 443, 443, 443, 443, 443, 443, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 443, 443, 443, 443, 443, 443, 440, 436, 441, 441, 441, 436, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 436, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 441, 441, 441, 441, 441, 441, 441, 444, 444, 444, 444, 444, 444, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 444, 444, 444, 444, 444, 444, 441, 436, 442, 442, 442, 436, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 436, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 445, 445, 445, 445, 445, 445, 442, 446, 449, 448, 448, 448, 449, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 449, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 448, 448, 448, 448, 448, 448, 448, 450, 450, 450, 450, 450, 450, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 450, 450, 450, 450, 450, 450, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 440, 448, 449, 451, 451, 451, 449, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 449, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 451, 451, 451, 451, 451, 451, 451, 452, 452, 452, 452, 452, 452, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 452, 452, 452, 452, 452, 452, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 453, 451, 449, 454, 454, 454, 449, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 449, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 454, 454, 454, 454, 454, 454, 454, 455, 455, 455, 455, 455, 455, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 455, 455, 455, 455, 455, 455, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 456, 454, 449, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 459, 449, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 459, 458, 449, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 447, 458, 447, 449, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 442, 455, 447, 442, 442, 442, 447, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 447, 442, 449, 451, 451, 451, 449, 451, 451, 451, 451, 460, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 449, 451, 451, 451, 451, 451, 460, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 451, 451, 451, 451, 451, 451, 451, 461, 461, 461, 461, 461, 461, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 461, 461, 461, 461, 461, 461, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, 462, 451, 449, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 457, 457, 457, 457, 457, 457, 457, 463, 463, 463, 463, 463, 463, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 463, 463, 463, 463, 463, 463, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 457, 457, 457, 457, 457, 457, 457, 464, 464, 464, 464, 464, 464, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 464, 464, 464, 464, 464, 464, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 457, 457, 457, 457, 457, 457, 457, 465, 465, 465, 465, 465, 465, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 465, 465, 465, 465, 465, 465, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 457, 457, 457, 457, 457, 457, 457, 466, 466, 466, 466, 466, 466, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 466, 466, 466, 466, 466, 466, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 467, 467, 467, 467, 467, 467, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 457, 457, 457, 457, 457, 457, 457, 468, 468, 468, 468, 468, 468, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 468, 468, 468, 468, 468, 468, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 460, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 462, 457, 449, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 469, 469, 469, 469, 469, 469, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 459, 457, 470, 449, 454, 454, 454, 449, 454, 454, 454, 454, 460, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 449, 454, 454, 454, 454, 454, 460, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 454, 454, 454, 454, 454, 454, 454, 465, 465, 465, 465, 465, 465, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 465, 465, 465, 465, 465, 465, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, 462, 454, 471, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 472, 472, 472, 472, 472, 472, 472, 473, 473, 473, 473, 473, 473, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, 473, 473, 473, 473, 473, 472, 472, 475, 474, 474, 474, 475, 474, 474, 474, 474, 476, 477, 476, 476, 476, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 475, 474, 474, 474, 474, 474, 476, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 478, 474, 476, 479, 476, 476, 476, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 476, 479, 480, 481, 481, 481, 480, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 480, 481, 483, 482, 482, 482, 483, 482, 482, 482, 482, 482, 484, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 483, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 485, 482, 486, 487, 487, 487, 486, 487, 487, 487, 487, 487, 488, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 486, 487, 490, 489, 489, 489, 490, 489, 489, 489, 489, 489, 491, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 490, 489, 489, 489, 489, 489, 489, 489, 489, 492, 489, 494, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 495, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 496, 493, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 497, 497, 497, 497, 497, 497, 497, 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, 497, 497, 497, 497, 75, 497, 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, 497, 497, 497, 497, 497, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 497, 499, 498, 498, 498, 499, 498, 498, 498, 498, 498, 500, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 499, 498, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 501, 501, 501, 501, 501, 501, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 501, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 503, 503, 503, 503, 503, 503, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 503, 504, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 505, 82, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 506, 506, 506, 506, 506, 506, 506, 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, 506, 506, 506, 506, 80, 506, 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, 506, 506, 506, 506, 506, 80, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 506, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 507, 507, 507, 507, 507, 507, 507, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 507, 507, 507, 507, 85, 507, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 507, 507, 507, 507, 507, 85, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 508, 508, 508, 508, 508, 508, 508, 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, 508, 508, 508, 508, 87, 508, 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, 508, 508, 508, 508, 508, 87, 510, 511, 511, 511, 510, 511, 511, 511, 511, 512, 513, 512, 512, 512, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 510, 511, 511, 511, 511, 511, 512, 514, 511, 515, 516, 517, 518, 511, 511, 511, 519, 520, 511, 520, 511, 521, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 522, 511, 523, 524, 525, 511, 511, 526, 527, 526, 526, 528, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 529, 530, 511, 521, 531, 521, 532, 533, 534, 535, 536, 537, 509, 509, 538, 509, 509, 509, 539, 540, 541, 509, 509, 542, 543, 544, 545, 509, 546, 509, 547, 509, 511, 548, 511, 520, 511, 509, 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, 549, 549, 549, 549, 549, 549, 549, 550, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 549, 549, 549, 550, 549, 550, 549, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 549, 549, 549, 549, 509, 549, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 549, 549, 549, 549, 549, 509, 512, 551, 512, 512, 512, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, 512, 551, 552, 521, 553, 553, 521, 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, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 521, 553, 554, 555, 556, 557, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 89, 89, 558, 89, 558, 89, 89, 558, 558, 89, 89, 89, 560, 89, 89, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 89, 89, 89, 89, 89, 89, 89, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 558, 89, 558, 558, 559, 89, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 558, 558, 558, 89, 558, 559, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 562, 562, 562, 562, 562, 562, 562, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 562, 562, 562, 562, 559, 562, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 562, 562, 562, 562, 562, 559, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 563, 553, 521, 553, 521, 553, 521, 553, 565, 564, 521, 566, 553, 521, 553, 567, 521, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 521, 558, 521, 553, 521, 521, 553, 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, 549, 549, 549, 549, 549, 549, 549, 550, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 549, 549, 549, 550, 549, 550, 549, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 549, 549, 549, 549, 526, 549, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 549, 549, 549, 549, 549, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 526, 569, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 526, 526, 526, 570, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 526, 526, 526, 526, 526, 571, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 572, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 573, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 550, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 550, 568, 550, 568, 526, 526, 526, 572, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 526, 568, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 568, 568, 568, 568, 568, 526, 567, 558, 513, 558, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 575, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 576, 577, 509, 509, 509, 509, 509, 578, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 579, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 580, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 581, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 582, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 583, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 584, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 585, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 586, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 587, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 588, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 589, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 585, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 590, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 589, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 591, 509, 592, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 593, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 594, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 595, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 596, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 597, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 598, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 599, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 600, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 601, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 602, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 603, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 604, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 594, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 605, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 606, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 550, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 607, 607, 607, 550, 607, 550, 607, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 607, 607, 607, 607, 509, 607, 509, 509, 509, 509, 509, 509, 509, 509, 608, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 607, 607, 607, 607, 607, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 609, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 610, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 611, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 612, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 613, 509, 614, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 615, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 587, 509, 509, 509, 616, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 617, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 618, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 603, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 619, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 541, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 601, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 620, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 621, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 622, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 603, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 623, 509, 509, 509, 624, 509, 509, 509, 509, 509, 625, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 625, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 626, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 627, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 628, 629, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 630, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 603, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 631, 509, 509, 632, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 587, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 598, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 633, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 634, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 616, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 635, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 541, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 636, 509, 509, 509, 509, 509, 509, 509, 509, 509, 630, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 598, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 637, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 638, 509, 509, 509, 509, 509, 509, 509, 639, 509, 509, 509, 509, 509, 509, 509, 640, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 616, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 604, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 624, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 641, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 598, 509, 509, 509, 622, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 642, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 643, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 550, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 550, 574, 550, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 509, 574, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 592, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 574, 574, 574, 574, 574, 509, 521, 553, 645, 646, 646, 646, 645, 646, 646, 646, 646, 647, 646, 647, 647, 647, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 645, 646, 646, 646, 646, 646, 647, 646, 646, 648, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 646, 649, 646, 646, 644, 646, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, 646, 646, 646, 646, 646, 644, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 94, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 95, 650, 650, 650, 650, 94, 650, 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, 650, 650, 650, 650, 93, 650, 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, 650, 650, 650, 650, 650, 93, 647, 651, 647, 647, 647, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 647, 651, 652, 653, 654, 655, 656, 650, 657, 659, 660, 660, 660, 659, 660, 660, 660, 660, 661, 662, 661, 661, 661, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 659, 660, 660, 660, 660, 660, 661, 663, 660, 664, 660, 665, 666, 660, 660, 660, 667, 668, 660, 668, 660, 665, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 669, 670, 671, 660, 660, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 673, 674, 660, 665, 658, 665, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 660, 675, 660, 668, 660, 658, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 677, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 676, 676, 676, 676, 676, 677, 676, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 676, 676, 676, 676, 658, 676, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 676, 676, 676, 676, 676, 658, 679, 678, 680, 661, 681, 661, 661, 661, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, 661, 681, 682, 665, 683, 683, 665, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 665, 683, 684, 685, 686, 687, 665, 683, 665, 683, 665, 683, 665, 688, 683, 665, 683, 690, 665, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 665, 689, 665, 683, 665, 665, 683, 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, 691, 691, 691, 691, 691, 691, 691, 677, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 691, 691, 691, 691, 691, 677, 691, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 691, 691, 691, 691, 672, 691, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, 691, 691, 691, 691, 691, 672, 690, 689, 662, 689, 665, 683, 693, 692, 692, 692, 693, 692, 692, 692, 692, 694, 695, 694, 694, 694, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 693, 692, 692, 692, 692, 692, 694, 692, 692, 696, 692, 103, 697, 692, 698, 692, 699, 103, 134, 700, 136, 103, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 701, 692, 702, 134, 703, 704, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 134, 705, 134, 103, 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, 706, 692, 692, 692, 692, 692, 692, 692, 692, 707, 692, 692, 708, 692, 709, 692, 692, 692, 147, 148, 692, 103, 692, 710, 710, 710, 710, 710, 710, 710, 710, 710, 694, 710, 694, 694, 694, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 694, 710, 710, 710, 710, 129, 130, 710, 131, 710, 132, 133, 134, 135, 136, 129, 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, 137, 710, 138, 134, 139, 140, 710, 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, 141, 142, 134, 103, 98, 710, 98, 98, 98, 98, 98, 98, 98, 98, 143, 98, 98, 98, 98, 98, 98, 98, 98, 144, 98, 98, 145, 98, 146, 98, 98, 98, 147, 148, 710, 103, 710, 98, 711, 712, 712, 712, 711, 712, 712, 712, 712, 134, 713, 134, 134, 134, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 711, 712, 712, 712, 712, 712, 134, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 134, 712, 134, 713, 134, 134, 134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 97, 97, 97, 97, 97, 103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 97, 134, 713, 134, 134, 134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 97, 714, 134, 713, 134, 134, 134, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 134, 715, 715, 715, 715, 715, 715, 715, 715, 715, 716, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, 134, 715, 134, 713, 134, 134, 134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 134, 134, 97, 717, 711, 134, 711, 719, 718, 721, 722, 721, 721, 721, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 721, 720, 723, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 99, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 100, 711, 711, 711, 711, 99, 711, 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, 711, 711, 711, 711, 98, 711, 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, 711, 711, 711, 711, 711, 98, 724, 134, 713, 134, 134, 134, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 134, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 134, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 103, 711, 725, 726, 727, 728, 729, 730, 134, 713, 134, 134, 134, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 134, 711, 711, 711, 711, 711, 711, 711, 711, 711, 103, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, 134, 711, 134, 718, 103, 731, 103, 731, 732, 733, 732, 732, 732, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 732, 720, 734, 731, 735, 735, 735, 735, 735, 735, 735, 735, 735, 106, 735, 106, 106, 106, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 106, 735, 735, 735, 735, 107, 108, 735, 109, 735, 110, 111, 112, 113, 114, 107, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 115, 735, 116, 112, 117, 118, 735, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 119, 120, 112, 121, 105, 735, 105, 105, 105, 105, 105, 105, 105, 105, 122, 105, 105, 105, 105, 105, 105, 105, 105, 123, 105, 105, 124, 105, 125, 105, 105, 105, 126, 127, 735, 121, 735, 105, 134, 731, 736, 731, 737, 731, 738, 731, 739, 173, 173, 173, 739, 173, 173, 173, 173, 740, 173, 740, 740, 740, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 739, 173, 173, 173, 173, 173, 740, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 173, 741, 173, 173, 175, 173, 175, 175, 175, 179, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 173, 173, 173, 173, 173, 175, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 742, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 173, 172, 172, 172, 172, 742, 172, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 172, 172, 172, 172, 175, 172, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 172, 172, 172, 172, 172, 175, 743, 743, 743, 743, 743, 743, 743, 743, 743, 176, 743, 176, 176, 176, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 176, 743, 743, 743, 743, 743, 743, 743, 177, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 743, 178, 743, 743, 175, 743, 175, 175, 175, 179, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 743, 743, 743, 743, 743, 175, 744, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 742, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 173, 743, 743, 743, 743, 742, 743, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 743, 743, 743, 743, 175, 743, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 745, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 743, 743, 743, 743, 743, 175, 180, 743, 747, 746, 746, 746, 747, 746, 746, 746, 746, 748, 746, 748, 748, 748, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 747, 746, 746, 746, 746, 746, 748, 746, 746, 749, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 750, 746, 746, 746, 746, 746, 746, 746, 751, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, 752, 746, 748, 753, 748, 748, 748, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 748, 753, 754, 755, 756, 757, 759, 758, 760, 761, 758, 762, 764, 765, 765, 765, 764, 765, 765, 765, 765, 766, 767, 766, 766, 766, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 764, 765, 765, 765, 765, 765, 766, 765, 765, 768, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 765, 769, 765, 765, 763, 765, 763, 763, 763, 763, 763, 763, 763, 763, 770, 763, 763, 763, 763, 763, 763, 763, 763, 771, 763, 763, 772, 763, 773, 763, 763, 763, 765, 765, 765, 765, 765, 763, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 774, 774, 774, 774, 774, 774, 774, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 774, 774, 774, 774, 763, 774, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 774, 774, 774, 774, 774, 763, 766, 775, 766, 766, 766, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 766, 775, 776, 777, 778, 779, 780, 782, 781, 783, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 785, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 786, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 787, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 788, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 789, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 785, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 790, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 791, 763, 763, 763, 763, 763, 763, 763, 792, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 793, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 794, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 785, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 795, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 785, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 796, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 797, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 784, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 763, 784, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 789, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 784, 784, 784, 784, 784, 763, 799, 197, 197, 197, 799, 197, 197, 197, 197, 800, 801, 800, 800, 800, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 799, 197, 197, 197, 197, 197, 800, 802, 197, 803, 197, 804, 805, 197, 806, 197, 807, 808, 197, 809, 810, 811, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 812, 197, 813, 814, 815, 816, 197, 817, 818, 817, 817, 819, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, 820, 821, 197, 822, 823, 197, 824, 825, 826, 827, 828, 829, 798, 798, 830, 798, 798, 798, 831, 832, 833, 798, 798, 834, 835, 836, 837, 798, 838, 798, 839, 798, 840, 841, 197, 822, 197, 798, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 242, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 186, 186, 244, 186, 242, 186, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 186, 186, 186, 186, 798, 186, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 186, 186, 186, 186, 186, 798, 843, 842, 842, 844, 842, 845, 847, 848, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 849, 846, 851, 850, 852, 853, 854, 800, 855, 800, 800, 800, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 800, 855, 857, 856, 859, 860, 859, 859, 859, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, 859, 858, 197, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 197, 861, 862, 863, 864, 865, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 867, 867, 867, 867, 867, 867, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 867, 869, 195, 195, 195, 869, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 869, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 195, 871, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 197, 870, 872, 874, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 197, 873, 197, 186, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 870, 870, 870, 197, 870, 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 870, 870, 870, 197, 197, 870, 876, 861, 197, 861, 861, 877, 877, 877, 861, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 861, 877, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 879, 880, 861, 881, 200, 882, 880, 861, 861, 883, 884, 861, 884, 861, 200, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 885, 861, 886, 887, 888, 861, 889, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 890, 861, 861, 200, 878, 200, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 861, 891, 861, 884, 861, 878, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 893, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 892, 892, 892, 894, 892, 893, 892, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 892, 892, 892, 892, 878, 892, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 892, 892, 892, 892, 892, 878, 896, 895, 897, 899, 900, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, 901, 898, 903, 904, 902, 905, 906, 907, 908, 200, 892, 892, 200, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 200, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 892, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 892, 892, 892, 892, 892, 892, 892, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 892, 892, 892, 892, 199, 892, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 892, 892, 892, 892, 892, 199, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 892, 200, 892, 200, 892, 200, 892, 200, 909, 892, 200, 892, 200, 892, 200, 200, 892, 200, 892, 910, 911, 861, 912, 197, 861, 822, 197, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 197, 861, 197, 871, 861, 915, 914, 914, 914, 915, 914, 914, 914, 914, 916, 917, 916, 916, 916, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 914, 914, 914, 914, 916, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 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, 914, 919, 914, 914, 918, 914, 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, 914, 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, 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, 920, 920, 920, 920, 920, 920, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 920, 920, 920, 920, 921, 920, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 920, 920, 920, 920, 920, 921, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 922, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 922, 922, 922, 922, 922, 922, 922, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 922, 922, 922, 922, 923, 922, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 923, 922, 922, 922, 922, 922, 923, 926, 925, 925, 925, 926, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 926, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 927, 927, 927, 927, 927, 927, 927, 927, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 928, 925, 925, 925, 925, 925, 925, 925, 925, 925, 929, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 930, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 925, 931, 925, 925, 932, 925, 933, 934, 936, 936, 936, 936, 936, 936, 936, 936, 935, 937, 937, 937, 937, 937, 937, 937, 937, 935, 935, 938, 938, 236, 236, 236, 938, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 938, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 939, 236, 940, 941, 942, 942, 236, 236, 236, 942, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 942, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 943, 236, 235, 942, 944, 945, 946, 946, 223, 223, 223, 946, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 946, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 947, 223, 942, 217, 217, 217, 942, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 942, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 948, 217, 938, 223, 223, 223, 938, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 938, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 938, 949, 949, 949, 938, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 938, 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, 949, 949, 950, 949, 951, 952, 952, 949, 949, 949, 952, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 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, 949, 949, 953, 949, 952, 217, 217, 217, 952, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 952, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 948, 217, 954, 952, 952, 223, 223, 223, 952, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 952, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 225, 223, 955, 956, 956, 956, 955, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 955, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 955, 959, 959, 959, 955, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 955, 959, 955, 960, 960, 960, 955, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 955, 960, 955, 961, 961, 961, 955, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 955, 961, 955, 955, 959, 959, 959, 955, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 955, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 959, 959, 959, 959, 959, 959, 959, 962, 962, 962, 962, 962, 962, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 962, 962, 962, 962, 962, 962, 959, 955, 960, 960, 960, 955, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 955, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 960, 960, 960, 960, 960, 960, 960, 963, 963, 963, 963, 963, 963, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 963, 963, 963, 963, 963, 963, 960, 955, 961, 961, 961, 955, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 955, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 961, 961, 961, 961, 961, 961, 961, 964, 964, 964, 964, 964, 964, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 964, 964, 964, 964, 964, 964, 961, 965, 968, 967, 967, 967, 968, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 968, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 967, 967, 967, 967, 967, 967, 967, 969, 969, 969, 969, 969, 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, 969, 969, 969, 969, 969, 969, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 959, 967, 968, 970, 970, 970, 968, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 968, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 971, 971, 971, 971, 971, 971, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 972, 970, 968, 973, 973, 973, 968, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 968, 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, 973, 973, 973, 973, 973, 973, 973, 974, 974, 974, 974, 974, 974, 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, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 975, 973, 968, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 976, 976, 976, 976, 976, 976, 976, 977, 977, 977, 977, 977, 977, 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, 977, 977, 977, 977, 977, 977, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 976, 976, 976, 976, 976, 976, 976, 977, 977, 977, 977, 977, 977, 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, 977, 977, 977, 977, 977, 977, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 978, 968, 977, 977, 977, 968, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 968, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 978, 977, 968, 977, 977, 977, 968, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 968, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 966, 977, 966, 968, 974, 974, 974, 968, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 968, 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, 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, 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, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, 961, 974, 966, 961, 961, 961, 966, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 966, 961, 968, 970, 970, 970, 968, 970, 970, 970, 970, 979, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 968, 970, 970, 970, 970, 970, 979, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, 970, 970, 970, 970, 970, 970, 970, 980, 980, 980, 980, 980, 980, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 980, 980, 980, 980, 980, 980, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 981, 970, 968, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 976, 976, 976, 976, 976, 976, 976, 982, 982, 982, 982, 982, 982, 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, 982, 982, 982, 982, 982, 982, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 976, 976, 976, 976, 976, 976, 976, 983, 983, 983, 983, 983, 983, 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, 983, 983, 983, 983, 983, 983, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 976, 976, 976, 976, 976, 976, 976, 984, 984, 984, 984, 984, 984, 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, 984, 984, 984, 984, 984, 984, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, 976, 976, 976, 976, 976, 976, 976, 985, 985, 985, 985, 985, 985, 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, 985, 985, 985, 985, 985, 985, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, 976, 976, 976, 976, 976, 976, 976, 986, 986, 986, 986, 986, 986, 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, 986, 986, 986, 986, 986, 986, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, 976, 976, 976, 976, 976, 976, 976, 987, 987, 987, 987, 987, 987, 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, 987, 987, 987, 987, 987, 987, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 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, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 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, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 978, 976, 968, 973, 973, 973, 968, 973, 973, 973, 973, 979, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 968, 973, 973, 973, 973, 973, 979, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 973, 973, 973, 973, 973, 973, 973, 989, 989, 989, 989, 989, 989, 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, 989, 989, 989, 989, 989, 989, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, 981, 973, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 990, 990, 990, 990, 990, 990, 990, 990, 990, 990, 976, 976, 976, 976, 976, 976, 976, 990, 990, 990, 990, 990, 990, 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, 990, 990, 990, 990, 990, 990, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 981, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 991, 991, 991, 991, 991, 991, 991, 991, 991, 991, 976, 976, 976, 976, 976, 976, 976, 991, 991, 991, 991, 991, 991, 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, 991, 991, 991, 991, 991, 991, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 981, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 976, 976, 976, 976, 976, 976, 976, 992, 992, 992, 992, 992, 992, 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, 992, 992, 992, 992, 992, 992, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 981, 976, 968, 976, 976, 976, 968, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 968, 976, 976, 976, 976, 976, 979, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 988, 988, 988, 988, 988, 988, 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, 988, 988, 988, 988, 988, 988, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 981, 976, 993, 994, 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 995, 995, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 242, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 186, 186, 244, 186, 242, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 186, 186, 186, 186, 241, 186, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 186, 186, 186, 186, 186, 241, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 242, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 861, 861, 244, 861, 242, 861, 241, 241, 241, 241, 997, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 861, 861, 861, 861, 241, 861, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 861, 861, 861, 861, 861, 241, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 242, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 861, 861, 244, 861, 242, 861, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 998, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 861, 861, 861, 861, 241, 861, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 861, 861, 861, 861, 861, 241, 999, 1000, 861, 856, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1002, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 1003, 1004, 798, 798, 798, 798, 798, 1005, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1006, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 1007, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1008, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 1009, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1010, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1011, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 1012, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1013, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1014, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1015, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1016, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 1012, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1017, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1016, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1018, 798, 1019, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1020, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 1021, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1022, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1023, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 1024, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1025, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1026, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 1027, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 1028, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1029, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1030, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 1031, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1021, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1032, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1033, 798, 1034, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1035, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1014, 798, 798, 798, 1032, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1036, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1037, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1030, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 1038, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 833, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1028, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 1039, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1040, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 1041, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1042, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1030, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1043, 798, 798, 798, 1044, 798, 798, 798, 798, 798, 1045, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1045, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1046, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 1047, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1048, 1049, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 1050, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1051, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1052, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1055, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1056, 1053, 1053, 1057, 1053, 1055, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1053, 1053, 1053, 1054, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1053, 1053, 1053, 1053, 1053, 1054, 847, 1058, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 849, 846, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1059, 798, 798, 1060, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1014, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1025, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1061, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1062, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1032, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1063, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 833, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 1064, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1065, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1025, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1030, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1066, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 1067, 798, 798, 798, 798, 798, 798, 798, 1068, 798, 798, 798, 798, 798, 798, 798, 1069, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1032, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1070, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1071, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1039, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1072, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1039, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 1073, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1025, 798, 798, 798, 1074, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1075, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1039, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 1076, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 1077, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 242, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 243, 1001, 1001, 244, 1001, 242, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 798, 1001, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1019, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 1001, 1001, 1001, 1001, 1001, 798, 1078, 197, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 871, 861, 1080, 1079, 1079, 1079, 1080, 1079, 1079, 1079, 1079, 1081, 1082, 1081, 1081, 1081, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1079, 1079, 1079, 1079, 1079, 1081, 1079, 1079, 1083, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1084, 1079, 1081, 1085, 1081, 1081, 1081, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1081, 1085, 1086, 1087, 1088, 1089, 1090, 1092, 1091, 1093, 1095, 1096, 1096, 1096, 1095, 1096, 1096, 1096, 1096, 1097, 1098, 1097, 1097, 1097, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1095, 1096, 1096, 1096, 1096, 1096, 1097, 1096, 1099, 1100, 1096, 1096, 1096, 1099, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1096, 1101, 1096, 1096, 1094, 1096, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1096, 1096, 1096, 1096, 1096, 1094, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 250, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 251, 1102, 1102, 1102, 1102, 250, 1102, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1102, 1102, 1102, 1102, 249, 1102, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1102, 1102, 1102, 1102, 1102, 249, 1097, 1103, 1097, 1097, 1097, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1097, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1102, 1110, 1112, 1113, 1113, 1113, 1112, 1113, 1113, 1113, 1113, 1114, 1115, 1114, 1114, 1114, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1112, 1113, 1113, 1113, 1113, 1113, 1114, 1116, 1117, 1118, 1119, 1120, 1121, 1117, 1122, 1123, 1124, 1120, 1125, 1126, 1127, 1120, 1128, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1137, 1137, 1139, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1140, 1141, 1142, 1120, 1143, 1117, 1144, 1145, 1146, 1147, 1148, 1149, 1111, 1111, 1150, 1111, 1111, 1111, 1151, 1152, 1153, 1111, 1111, 1154, 1155, 1156, 1157, 1111, 1158, 1111, 1159, 1111, 1160, 1161, 1162, 1120, 1113, 1111, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1163, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 259, 259, 259, 259, 259, 1163, 259, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 259, 259, 259, 259, 1111, 259, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 259, 259, 259, 259, 259, 1111, 1165, 1164, 1166, 1114, 1167, 1114, 1114, 1114, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1114, 1167, 1168, 1170, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, 1169, 1171, 1172, 1173, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 254, 254, 1175, 254, 1175, 254, 254, 1175, 1175, 254, 254, 254, 1176, 254, 254, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 254, 254, 254, 254, 254, 254, 254, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1175, 254, 1175, 1175, 262, 254, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1175, 1175, 1175, 254, 1175, 262, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1178, 1178, 1178, 1178, 262, 1178, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1178, 1178, 1178, 1178, 1178, 262, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178, 1179, 1169, 1120, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1180, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1179, 1169, 1181, 1182, 1120, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1179, 1169, 1179, 1183, 1169, 1185, 1184, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1184, 1125, 1186, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1188, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1189, 1187, 1187, 1187, 1187, 1187, 1188, 1187, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 256, 1187, 1191, 1190, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1193, 1190, 1194, 1195, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1196, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1197, 1190, 1190, 1190, 1190, 1190, 1190, 1198, 1190, 1190, 1193, 1190, 1194, 1195, 1190, 1190, 1190, 1199, 1190, 1190, 1190, 1190, 1190, 1196, 1190, 1190, 1200, 1190, 1190, 1190, 1190, 1190, 1197, 1190, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1203, 1201, 1201, 1201, 1201, 1201, 1202, 1201, 1201, 1201, 1204, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1205, 1201, 1206, 259, 1206, 259, 259, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 259, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1206, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1209, 1211, 1210, 1212, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 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, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1198, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1199, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1200, 1190, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 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, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1214, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1199, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1200, 1190, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1217, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1220, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1221, 1223, 1222, 1224, 1226, 1226, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1227, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1228, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1229, 1225, 1230, 1230, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1231, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1230, 1230, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1220, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 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, 1234, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1235, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1236, 1232, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1239, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1240, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1241, 1237, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243, 1243, 1243, 1243, 1243, 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, 1244, 1242, 1243, 1243, 1243, 1243, 1243, 1243, 1242, 1242, 1245, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1246, 1242, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1248, 1215, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1220, 1215, 1247, 1247, 1247, 1247, 1247, 1247, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1250, 1249, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1252, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1253, 1249, 1249, 1249, 1249, 1249, 1252, 1249, 1249, 1249, 1254, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1255, 1249, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1257, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1254, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1255, 1249, 1258, 1215, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1260, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1261, 1215, 1215, 1215, 1215, 1215, 1260, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1220, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1218, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1219, 1215, 1180, 1186, 1120, 1262, 1169, 1170, 1169, 1263, 1170, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1170, 1186, 1170, 1169, 1170, 1120, 1169, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1175, 1175, 1175, 1175, 1175, 1175, 1264, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1175, 1175, 1175, 1175, 262, 1175, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 1175, 1175, 1175, 1175, 1175, 262, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1163, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 259, 259, 259, 259, 1163, 259, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 259, 259, 259, 259, 1137, 259, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 259, 259, 259, 259, 259, 1137, 1266, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1137, 1268, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1269, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1270, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1271, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1272, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1163, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1265, 1267, 1267, 1267, 1267, 1163, 1267, 1137, 1137, 1137, 1271, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1137, 1267, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1267, 1267, 1267, 1267, 1267, 1137, 1273, 1275, 1274, 1276, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1278, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1279, 1280, 1111, 1111, 1111, 1111, 1111, 1281, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1282, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1283, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1284, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1285, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1286, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1287, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1288, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1289, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1290, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1291, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1292, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1293, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1294, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1295, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1296, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1292, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1297, 1111, 1298, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1299, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1300, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1301, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1303, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1304, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1305, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1306, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1307, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1308, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1309, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1310, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1311, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1312, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1313, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1314, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1315, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 264, 265, 264, 264, 264, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 264, 1163, 1316, 266, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1316, 1316, 267, 1316, 1316, 1163, 1316, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1316, 268, 1316, 1316, 1111, 1316, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1316, 1316, 1316, 1316, 1316, 1111, 281, 282, 281, 281, 281, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 283, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 286, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 285, 280, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1318, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1319, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1320, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1163, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1321, 1321, 1321, 1321, 1321, 1163, 1321, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1321, 1321, 1321, 1321, 1111, 1321, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1322, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1321, 1321, 1321, 1321, 1321, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1323, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1324, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1325, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1326, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1327, 1111, 1328, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1329, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1330, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1295, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1331, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1332, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1312, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1333, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1153, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1334, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1335, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1295, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1336, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1302, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1337, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1338, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1339, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1312, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1340, 1111, 1111, 1111, 1341, 1111, 1111, 1111, 1111, 1111, 1342, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1343, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1309, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1295, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1344, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1345, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1346, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1347, 1348, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1295, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1349, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1350, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1336, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1351, 1111, 1111, 1352, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1295, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1353, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1309, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1354, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1355, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1356, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1295, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1357, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1358, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1344, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1359, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1360, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1306, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1335, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1361, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1362, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1363, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1364, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1365, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1301, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1366, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1367, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1336, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1368, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1336, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1369, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1306, 1111, 1111, 1111, 1370, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1371, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1336, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1372, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1373, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1374, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1163, 1277, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1111, 1277, 1111, 1111, 1111, 1344, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1277, 1277, 1277, 1277, 1277, 1111, 1375, 1179, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1120, 1169, 1376, 1378, 1377, 1378, 1378, 1378, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, 1377, 1377, 1377, 1377, 1377, 1379, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 292, 1377, 290, 1380, 290, 290, 290, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 290, 1380, 1380, 1380, 1380, 1380, 291, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 292, 1380, 293, 1380, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1383, 1381, 1382, 1381, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1385, 1381, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1386, 1381, 1382, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1387, 1381, 1389, 1387, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 161, 2, 3, 4, 167, 6, 7, 8, 9, 10, 161, 161, 170, 173, 170, 12, 174, 14, 170, 181, 182, 185, 186, 192, 187, 188, 189, 19, 190, 191, 194, 196, 197, 198, 199, 200, 25, 18, 183, 184, 27, 232, 233, 235, 237, 235, 30, 238, 32, 235, 245, 246, 249, 250, 256, 251, 252, 253, 37, 254, 255, 258, 260, 261, 262, 263, 264, 43, 36, 247, 248, 45, 296, 297, 304, 306, 304, 48, 307, 50, 312, 311, 0, 52, 313, 314, 54, 315, 316, 316, 316, 316, 429, 57, 58, 59, 429, 457, 60, 61, 457, 457, 461, 461, 65, 60, 66, 459, 460, 462, 463, 461, 457, 464, 465, 467, 62, 63, 468, 469, 64, 461, 67, 68, 73, 80, 471, 472, 66, 459, 460, 462, 463, 461, 457, 464, 465, 467, 62, 63, 468, 469, 64, 67, 68, 73, 80, 471, 472, 470, 69, 70, 71, 72, 74, 75, 78, 76, 77, 79, 81, 82, 457, 84, 85, 86, 88, 91, 89, 90, 92, 94, 488, 488, 488, 489, 96, 491, 97, 492, 98, 489, 96, 491, 97, 492, 526, 526, 526, 101, 102, 103, 104, 537, 526, 526, 542, 526, 526, 563, 526, 108, 564, 570, 111, 114, 116, 118, 119, 120, 114, 115, 574, 115, 574, 117, 526, 588, 589, 592, 593, 599, 594, 595, 596, 125, 597, 598, 601, 603, 604, 605, 606, 607, 131, 124, 590, 591, 133, 643, 644, 135, 528, 99, 530, 137, 138, 646, 747, 140, 141, 142, 747, 755, 755, 755, 145, 776, 775, 755, 778, 780, 765, 812, 151, 152, 153, 157, 158, 151, 152, 153, 157, 158, 154, 154, 152, 153, 155, 156, 154, 154, 152, 153, 155, 156, 859, 152, 755, 928, 159, 160, 928, 928, 161, 161, 162, 163, 164, 166, 168, 169, 161, 161, 161, 165, 161, 165, 161, 1, 161, 161, 161, 5, 170, 170, 171, 170, 172, 175, 170, 170, 11, 13, 170, 170, 170, 176, 177, 178, 15, 21, 26, 201, 28, 170, 170, 170, 179, 180, 170, 16, 170, 170, 170, 17, 170, 170, 170, 20, 193, 195, 22, 170, 170, 23, 24, 170, 202, 206, 210, 203, 204, 205, 207, 208, 209, 170, 170, 211, 215, 221, 212, 219, 220, 213, 217, 218, 214, 216, 170, 222, 231, 230, 223, 224, 225, 226, 227, 228, 229, 170, 170, 170, 234, 235, 235, 235, 236, 239, 235, 29, 31, 235, 235, 235, 240, 241, 242, 33, 39, 44, 265, 46, 235, 235, 235, 243, 244, 235, 34, 235, 235, 235, 35, 235, 235, 235, 38, 257, 259, 40, 235, 235, 41, 42, 235, 266, 270, 274, 267, 268, 269, 271, 272, 273, 235, 235, 275, 279, 285, 276, 283, 284, 277, 281, 282, 278, 280, 235, 286, 295, 294, 287, 288, 289, 290, 291, 292, 293, 235, 235, 235, 298, 299, 299, 300, 299, 301, 299, 299, 299, 302, 302, 302, 303, 302, 302, 302, 304, 304, 304, 305, 304, 47, 49, 304, 304, 308, 308, 308, 309, 310, 309, 51, 53, 311, 311, 311, 317, 316, 316, 318, 319, 320, 321, 323, 326, 327, 328, 329, 316, 330, 331, 333, 335, 336, 337, 341, 343, 344, 345, 361, 366, 373, 378, 385, 392, 395, 396, 400, 394, 404, 412, 416, 418, 423, 425, 428, 316, 316, 316, 316, 316, 316, 322, 316, 322, 316, 324, 55, 325, 316, 56, 316, 316, 332, 334, 316, 338, 339, 340, 336, 342, 316, 346, 347, 356, 359, 348, 349, 350, 351, 352, 353, 354, 355, 317, 357, 358, 360, 362, 365, 363, 364, 367, 370, 368, 369, 371, 372, 374, 376, 375, 377, 379, 380, 316, 381, 382, 383, 384, 316, 386, 389, 387, 388, 390, 391, 393, 397, 398, 399, 401, 403, 402, 405, 406, 407, 409, 408, 410, 411, 413, 414, 415, 417, 419, 420, 421, 422, 424, 426, 427, 430, 429, 429, 431, 432, 434, 429, 429, 429, 433, 429, 433, 435, 429, 437, 436, 436, 440, 441, 442, 443, 436, 445, 446, 447, 448, 450, 452, 453, 454, 455, 456, 436, 438, 436, 439, 436, 436, 436, 436, 436, 444, 436, 444, 449, 436, 451, 436, 457, 457, 458, 473, 474, 460, 476, 477, 464, 478, 479, 480, 481, 482, 484, 485, 486, 487, 457, 457, 457, 457, 457, 457, 461, 466, 457, 457, 457, 457, 457, 457, 457, 457, 457, 475, 457, 475, 457, 457, 457, 457, 483, 457, 83, 87, 93, 488, 490, 493, 95, 488, 488, 489, 494, 494, 495, 496, 498, 500, 501, 494, 494, 497, 494, 497, 494, 499, 494, 494, 494, 503, 502, 502, 504, 505, 506, 508, 510, 511, 516, 523, 502, 502, 502, 502, 507, 502, 507, 502, 509, 502, 502, 503, 512, 513, 514, 515, 517, 518, 521, 519, 520, 522, 524, 525, 527, 526, 535, 536, 538, 539, 541, 543, 544, 545, 547, 548, 549, 551, 552, 573, 576, 577, 578, 646, 647, 648, 649, 650, 546, 652, 668, 673, 680, 685, 687, 693, 696, 697, 701, 695, 705, 716, 720, 723, 731, 735, 738, 739, 526, 99, 529, 526, 526, 531, 533, 534, 526, 532, 526, 526, 526, 526, 526, 100, 526, 526, 526, 526, 526, 540, 526, 540, 526, 526, 105, 526, 526, 106, 526, 526, 546, 526, 550, 526, 553, 562, 526, 107, 565, 566, 567, 526, 568, 109, 571, 110, 112, 572, 526, 554, 556, 526, 555, 526, 526, 557, 560, 561, 526, 558, 559, 526, 526, 526, 526, 569, 113, 575, 526, 526, 579, 526, 526, 526, 580, 582, 526, 581, 526, 581, 526, 583, 584, 585, 121, 127, 132, 608, 134, 526, 526, 526, 586, 587, 526, 122, 526, 526, 526, 123, 526, 526, 526, 126, 600, 602, 128, 526, 526, 129, 130, 526, 609, 613, 617, 610, 611, 612, 614, 615, 616, 526, 526, 618, 622, 628, 619, 626, 627, 620, 624, 625, 621, 623, 526, 629, 637, 642, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 526, 526, 526, 645, 136, 139, 526, 651, 526, 653, 654, 663, 666, 655, 656, 657, 658, 659, 660, 661, 662, 527, 664, 665, 667, 669, 672, 670, 671, 674, 677, 675, 676, 678, 679, 681, 683, 682, 684, 686, 688, 690, 689, 691, 692, 694, 527, 698, 699, 700, 702, 704, 703, 706, 707, 708, 713, 709, 710, 711, 526, 527, 528, 99, 712, 533, 714, 715, 717, 718, 719, 721, 722, 724, 725, 726, 729, 727, 728, 730, 732, 733, 734, 736, 737, 526, 740, 740, 741, 742, 743, 745, 740, 740, 740, 744, 740, 744, 740, 746, 740, 748, 747, 747, 749, 750, 747, 751, 753, 747, 747, 747, 747, 752, 747, 752, 754, 747, 756, 755, 755, 759, 760, 761, 755, 762, 764, 767, 768, 769, 770, 771, 755, 772, 773, 777, 800, 804, 755, 805, 807, 809, 755, 810, 811, 813, 817, 819, 820, 755, 822, 840, 845, 852, 860, 867, 874, 879, 880, 884, 878, 889, 899, 905, 908, 917, 921, 925, 926, 927, 757, 755, 758, 755, 755, 755, 755, 755, 755, 763, 755, 763, 755, 143, 766, 755, 755, 755, 755, 755, 755, 755, 774, 755, 755, 144, 146, 755, 147, 784, 792, 795, 779, 796, 797, 785, 789, 790, 755, 779, 147, 781, 782, 148, 755, 781, 755, 755, 783, 755, 786, 788, 755, 786, 787, 789, 790, 788, 755, 755, 791, 755, 755, 793, 788, 789, 790, 793, 794, 755, 786, 788, 789, 790, 755, 786, 788, 789, 790, 755, 798, 788, 789, 790, 798, 799, 755, 147, 800, 779, 801, 789, 790, 802, 788, 147, 802, 779, 803, 806, 808, 149, 150, 755, 755, 814, 815, 816, 811, 818, 755, 755, 821, 755, 755, 823, 824, 833, 838, 825, 826, 827, 828, 829, 830, 831, 832, 756, 834, 835, 836, 837, 756, 839, 841, 844, 842, 843, 756, 756, 846, 849, 847, 848, 850, 851, 756, 853, 855, 854, 856, 857, 858, 755, 755, 861, 756, 862, 755, 863, 864, 865, 866, 757, 868, 871, 869, 870, 872, 873, 875, 876, 877, 756, 881, 882, 883, 885, 887, 888, 886, 756, 890, 891, 892, 895, 893, 894, 896, 897, 898, 900, 902, 901, 903, 904, 906, 907, 909, 910, 912, 915, 911, 913, 914, 916, 918, 919, 920, 922, 923, 924, 755, 755, 928, 929, 930, 928, 932, 931, 933, 931, 934, 935, 936, 931, 931 ] 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, 0, 14, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, 0, 0, 0, 20, 21, 0, 0, 22, 23, 24, 25, 26, 27, 27, 28, 29, 27, 30, 29, 31, 29, 27, 27, 28, 27, 32, 27, 27, 33, 27, 27, 27, 27, 27, 27, 0, 34, 35, 0, 36, 35, 37, 35, 0, 0, 34, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 0, 0, 0, 43, 26, 44, 27, 27, 27, 44, 45, 46, 47, 0, 0, 0, 0, 0, 48, 49, 0, 50, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 54, 0, 26, 0, 55, 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, 56, 0, 0, 0, 0, 56, 57, 0, 0, 0, 58, 59, 60, 61, 0, 7, 7, 62, 63, 63, 0, 0, 0, 26, 0, 0, 0, 27, 64, 27, 27, 27, 65, 66, 67, 66, 66, 66, 0, 68, 69, 68, 68, 68, 70, 71, 72, 73, 0, 74, 75, 76, 79, 80, 0, 26, 0, 7, 0, 7, 81, 82, 83, 65, 84, 0, 85, 0, 86, 87, 88, 0, 89, 90, 0, 91, 7, 7, 92, 93, 0, 0, 94, 95, 96, 97, 97, 97, 97, 97, 97, 97, 97, 98, 99, 100, 0, 0, 101, 0, 102, 103, 104, 0, 105, 106, 107, 0, 7, 0, 0, 108, 109, 0, 26, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 115, 116, 0, 117, 118, 119, 7, 7, 120, 0, 0, 121, 122, 123, 97, 97, 97, 97, 97, 97, 97, 97, 124, 125, 126, 0, 0, 127, 0, 128, 129, 130, 0, 131, 132, 133, 0, 7, 0, 0, 134, 135, 0, 26, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 141, 142, 0, 143, 144, 0, 145, 0, 146, 147, 148, 149, 150, 151, 0, 152, 153, 154, 155, 156, 157, 7, 158, 0, 0, 159, 160, 161, 162, 163, 164, 0, 165, 0, 0, 166, 167, 168, 169, 170, 171, 0, 26, 0, 0, 7, 7, 0, 0, 0, 172, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, 179, 65, 180, 0, 181, 0, 0, 0, 182, 0, 183, 184, 0, 0, 185, 0, 0, 0, 186, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 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, 190, 191, 0, 0, 0, 192, 193, 194, 65, 195, 0, 26, 196, 0, 197, 198, 0, 26, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 201, 0, 202, 203, 204, 205, 206, 65, 207, 0, 0, 208, 0, 209, 210, 211, 212, 26, 0, 25, 0, 0, 25, 0, 0, 0, 0, 0, 0, 7, 7, 7, 213, 214, 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, 224, 225, 226, 227, 228, 65, 229, 0, 230, 231, 232, 233, 234, 235, 0, 0, 0, 236, 7, 7, 0, 237, 238, 239, 240, 241, 0, 0, 0, 0, 0, 242, 243, 65, 244, 0, 245, 26, 246, 247, 248, 249, 250, 251, 0, 26, 0, 0, 0, 0, 0, 0, 252, 253, 254, 255, 65, 256, 0, 257, 26, 258, 259, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, 262, 0, 8, 0, 0, 7, 263, 0, 0, 0, 0, 0, 0, 7, 7, 0, 264, 0, 264, 264, 264, 0, 0, 264, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 0, 264, 265, 266, 0, 267, 268, 0, 56, 0, 269, 0, 270, 271, 272, 273, 274, 27, 275, 276, 277, 278, 279, 65, 280, 0, 281, 282, 0, 283, 284, 0, 285, 286, 263, 287, 0, 288, 0, 0, 289, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 291, 0, 0, 292, 0, 293, 294, 0, 0, 0, 295, 0, 0, 296, 297, 298, 299, 0, 0, 0, 300, 301, 0, 302, 303, 304, 0, 7, 305, 306, 307, 0, 308, 97, 97, 97, 97, 97, 97, 97, 97, 309, 310, 311, 0, 0, 312, 0, 313, 314, 315, 0, 316, 317, 318, 0, 7, 0, 0, 319, 320, 0, 26, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, 326, 327, 0, 0, 0, 328, 26, 329, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 56, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 330, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 331, 332, 333, 334, 335, 335, 331, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 336, 337, 338, 0, 26, 0, 0, 339, 340, 341, 65, 342, 0, 343, 26, 344, 7, 345, 346, 0, 26, 347, 0, 0, 348, 349, 350, 351, 65, 352, 0, 26, 353, 354, 355, 356, 0, 26, 0, 357, 0, 7, 0, 0, 0, 0, 0, 358, 0, 0, 359, 359, 0, 360, 0, 0, 0, 361, 7, 362, 362, 362, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 365, 0, 366, 367, 368, 369, 370, 371, 65, 372, 0, 373, 0, 0, 374, 375, 376, 377, 378, 379, 380, 0, 381, 382, 0, 0, 383, 384, 385, 0, 0, 386, 0, 0, 385, 387, 387, 388, 389, 0, 390, 390, 0, 391, 392, 393, 394, 0, 395, 385, 385, 396, 0, 0, 397, 397, 0, 398, 399, 0, 400, 401, 402, 402, 403, 403, 0, 0, 404, 405, 405, 406, 406, 407, 408, 408, 409, 409, 410, 411, 411, 412, 412, 0, 0, 413, 414, 415, 416, 417, 418, 418, 415, 417, 419, 359, 420, 0, 0, 0, 0, 0, 421, 422, 362, 362, 362, 423, 362, 424, 425, 26, 426, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 429, 430, 0, 0, 0, 0, 0, 0, 431, 0, 0, 0, 0, 0, 430, 432, 433, 0, 434, 0, 435, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 437, 0, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 438, 439, 440, 7, 74, 441, 0, 442, 0, 443, 0, 0, 0, 444, 445 ] 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, 77, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 77, 0, 77, 0, 0, 0, 77, 77, 0, 77, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 77, 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, 78, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 78, 0, 78, 0, 0, 0, 78, 78, 0, 78, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 78, 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, 0, 0, 0, 0, 89, 91, 93, 93, 93, 98, 98, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 173, 175, 175, 175, 187, 189, 189, 189, 189, 189, 195, 187, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 187, 199, 199, 199, 199, 249, 249, 249, 254, 256, 256, 256, 260, 260, 254, 260, 260, 260, 260, 260, 260, 260, 260, 260, 290, 290, 0, 303, 304, 305, 307, 309, 311, 309, 309, 0, 321, 322, 326, 326, 327, 336, 337, 338, 338, 338, 341, 341, 343, 344, 345, 345, 345, 347, 348, 349, 349, 345, 341, 341, 354, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 358, 358, 368, 369, 369, 369, 369, 381, 381, 381, 369, 369, 369, 369, 381, 381, 381, 381, 381, 381, 381, 381, 381, 392, 381, 393, 394, 394, 0, 401, 405, 405, 406, 415, 416, 417, 417, 417, 420, 420, 422, 423, 424, 424, 424, 426, 427, 428, 428, 424, 420, 420, 433, 434, 434, 434, 434, 434, 437, 437, 437, 437, 437, 437, 437, 437, 447, 448, 448, 448, 448, 460, 460, 460, 448, 448, 448, 448, 460, 460, 460, 460, 460, 460, 460, 460, 460, 471, 460, 472, 473, 473, 0, 480, 481, 0, 487, 0, 494, 498, 498, 0, 0, 504, 0, 507, 507, 508, 509, 0, 550, 552, 553, 554, 555, 557, 559, 563, 563, 554, 554, 554, 554, 565, 554, 554, 559, 554, 554, 550, 569, 569, 569, 569, 569, 569, 559, 559, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 608, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 554, 0, 651, 652, 653, 655, 651, 658, 0, 677, 679, 681, 682, 683, 684, 685, 687, 684, 684, 684, 684, 684, 690, 684, 684, 692, 690, 690, 684, 0, 711, 712, 98, 98, 715, 716, 98, 712, 712, 719, 721, 724, 712, 725, 712, 726, 727, 729, 731, 712, 719, 732, 732, 721, 732, 736, 732, 732, 732, 732, 0, 173, 744, 745, 744, 744, 0, 754, 755, 757, 759, 761, 759, 763, 0, 775, 776, 777, 778, 780, 782, 784, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 0, 187, 843, 846, 847, 851, 853, 854, 855, 856, 857, 859, 862, 863, 865, 867, 870, 871, 873, 874, 187, 871, 871, 862, 862, 862, 862, 893, 896, 898, 899, 903, 906, 907, 908, 909, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 862, 913, 862, 862, 862, 914, 921, 921, 923, 925, 934, 935, 936, 936, 936, 939, 939, 941, 942, 943, 943, 943, 945, 946, 947, 947, 943, 939, 939, 952, 953, 953, 953, 953, 953, 956, 956, 956, 956, 956, 956, 956, 956, 966, 967, 967, 967, 967, 979, 979, 979, 967, 967, 967, 967, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 994, 995, 996, 996, 187, 862, 862, 1000, 862, 857, 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, 1054, 847, 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, 1079, 862, 0, 1086, 1087, 1088, 1090, 1092, 1094, 0, 1103, 1104, 1105, 1106, 1108, 1103, 1111, 0, 260, 1165, 1167, 1168, 1169, 1170, 1172, 1174, 1176, 1179, 1179, 1170, 1170, 1182, 1183, 1170, 1170, 1185, 1187, 1188, 1188, 1191, 1202, 260, 1208, 1210, 1211, 1213, 1191, 1191, 1216, 1216, 1216, 1222, 1223, 1225, 1226, 1216, 1216, 1233, 1238, 1243, 1216, 1216, 1250, 1250, 1216, 1216, 1187, 1170, 1170, 1187, 1170, 1170, 1176, 260, 1267, 1268, 1268, 1268, 1268, 1268, 1268, 1274, 1176, 1277, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1317, 1318, 1278, 1278, 1322, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1278, 1376, 1170, 1377, 0, 1381, 1381, 0, 1385, 1385, 1385, 1385, 1389 ] class << self attr_accessor :lex_start end self.lex_start = 161; 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 = 170; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 235; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 299; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 302; class << self attr_accessor :lex_en_interp_backslash_delimited end self.lex_en_interp_backslash_delimited = 304; class << self attr_accessor :lex_en_plain_backslash_delimited end self.lex_en_plain_backslash_delimited = 308; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 309; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 311; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 316; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 429; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 436; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 457; class << self attr_accessor :lex_en_expr_cmdarg end self.lex_en_expr_cmdarg = 488; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 494; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 502; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 526; class << self attr_accessor :lex_en_expr_labelarg end self.lex_en_expr_labelarg = 740; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 747; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 755; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 928; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 931; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 161; # 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 RBRACE_OR_RBRACK = %w"} ]".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 end def source_buffer=(source_buffer) @source_buffer = source_buffer if @source_buffer source = @source_buffer.source if defined?(Encoding) && 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 10789 "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 78 then # line 1 "NONE" begin @ts = p end # line 10817 "lib/parser/lexer.rb" end _keys = @cs << 1 _inds = _lex_index_offsets[ @cs] _slen = _lex_key_spans[ @cs] _trans = if ( _slen > 0 && _lex_trans_keys[_keys] <= ( (@source_pts[p] || 0)) && ( (@source_pts[p] || 0)) <= _lex_trans_keys[_keys + 1] ) then _lex_indicies[ _inds + ( (@source_pts[p] || 0)) - _lex_trans_keys[_keys] ] else _lex_indicies[ _inds + _slen ] end end if _goto_level <= _eof_trans @cs = _lex_trans_targs[_trans] if _lex_trans_actions[_trans] != 0 case _lex_trans_actions[_trans] when 26 then # line 486 "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 97 then # line 766 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 27 then # line 806 "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 65 then # line 1108 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 68 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 266 then # line 1152 "lib/parser/lexer.rl" begin tm = p end when 34 then # line 1421 "lib/parser/lexer.rl" begin tm = p end when 36 then # line 1437 "lib/parser/lexer.rl" begin tm = p end when 38 then # line 1465 "lib/parser/lexer.rl" begin tm = p end when 53 then # line 1651 "lib/parser/lexer.rl" begin heredoc_e = p end when 306 then # line 1705 "lib/parser/lexer.rl" begin @escape = nil end when 335 then # line 1778 "lib/parser/lexer.rl" begin tm = p end when 411 then # line 1996 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 405 then # line 1997 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 408 then # line 1998 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 402 then # line 1999 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 417 then # line 2000 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 385 then # line 2001 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 397 then # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 392 then # line 2059 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 390 then # line 2060 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 74 then # line 2195 "lib/parser/lexer.rl" begin tm = p end when 7 then # line 1 "NONE" begin @te = p+1 end when 94 then # line 1007 "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 begin @stack[ @top] = @cs @top+= 1 @cs = 747 _goto_level = _again next end end end when 5 then # line 952 "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 = 311 _goto_level = _again next end end end when 90 then # line 877 "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 = 740; 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 95 then # line 952 "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 = 311 _goto_level = _again next end end end when 92 then # line 939 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 93 then # line 815 "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 = 740; 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 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 4 then # line 815 "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 = 740; 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 121 then # line 1007 "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 begin @stack[ @top] = @cs @top+= 1 @cs = 747 _goto_level = _again next end end end when 10 then # line 952 "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 = 311 _goto_level = _again next end end end when 118 then # line 877 "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 = 740; 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 122 then # line 952 "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 = 311 _goto_level = _again next end end end when 120 then # line 815 "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 = 740; 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 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 9 then # line 815 "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 = 740; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 144 then # line 877 "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 = 740; 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 146 then # line 939 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 147 then # line 815 "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 = 740; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 150 then # line 877 "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 = 740; 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 152 then # line 815 "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 = 740; 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 1007 "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 begin @stack[ @top] = @cs @top+= 1 @cs = 747 _goto_level = _again next end end end when 13 then # line 952 "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 = 311 _goto_level = _again next end end end when 156 then # line 877 "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 = 740; 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 160 then # line 952 "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 = 311 _goto_level = _again next end end end when 158 then # line 815 "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 = 740; 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 815 "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 = 740; 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 162 then # line 877 "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 = 740; 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 164 then # line 1083 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tREGEXP_OPT, tok(@ts, @te - 1), @ts, @te - 1) p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 165 then # line 1071 "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 = 755; begin p += 1 _goto_level = _out next end end end when 14 then # line 1211 "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 166 then # line 1211 "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 168 then # line 1224 "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 167 then # line 1234 "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 189 then # line 1255 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(KEYWORDS_BEGIN); @cs = 429; begin p += 1 _goto_level = _out next end end end when 175 then # line 1263 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 429; begin p += 1 _goto_level = _out next end end end when 16 then # line 1267 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs = 755; begin @stack[ @top] = @cs @top+= 1 @cs = 311 _goto_level = _again next end end end when 172 then # line 1276 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 429; begin p += 1 _goto_level = _out next end end end when 184 then # line 1280 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 18 then # line 1286 "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 = 755 _goto_level = _again next end end end end when 171 then # line 1299 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 170 then # line 512 "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 188 then # line 1255 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS_BEGIN); @cs = 429; begin p += 1 _goto_level = _out next end end end when 185 then # line 1259 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 429; begin p += 1 _goto_level = _out next end end end when 187 then # line 1263 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 429; begin p += 1 _goto_level = _out next end end end when 182 then # line 1267 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs = 755; begin @stack[ @top] = @cs @top+= 1 @cs = 311 _goto_level = _again next end end end when 178 then # line 1276 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 429; begin p += 1 _goto_level = _out next end end end when 183 then # line 1283 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 176 then # line 1296 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 181 then # line 1299 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 17 then # line 1276 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit_table(PUNCTUATION) @cs = 429; begin p += 1 _goto_level = _out next end end end when 15 then # line 1299 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 174 then # line 1 "NONE" begin case @act when 31 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN); @cs = 429; begin p += 1 _goto_level = _out next end end when 32 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 429; begin p += 1 _goto_level = _out next end end when 33 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 429; begin p += 1 _goto_level = _out next end end end end when 20 then # line 1311 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) p = p - 1; @cs = 740; begin p += 1 _goto_level = _out next end end end when 191 then # line 1317 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 190 then # line 512 "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 193 then # line 1314 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 192 then # line 1317 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 19 then # line 1317 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 199 then # line 1343 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 457; begin p += 1 _goto_level = _out next end end end when 198 then # line 1349 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 197 then # line 512 "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 209 then # line 1328 "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 200 then # line 1332 "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 205 then # line 1343 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 457; begin p += 1 _goto_level = _out next end end end when 203 then # line 1346 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 208 then # line 1349 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 232 then # line 1407 "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 = 755 _goto_level = _again next end end end when 215 then # line 1425 "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 = 526 _goto_level = _again next end end end when 221 then # line 1449 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 22 then # line 1457 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 526 _goto_level = _again next end end end when 223 then # line 1466 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 755 _goto_level = _again next end end end when 37 then # line 1475 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 210 then # line 1489 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 211 then # line 512 "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 222 then # line 1416 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 218 then # line 1438 "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 = 526 _goto_level = _again next end end end when 220 then # line 1454 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 214 then # line 1475 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 213 then # line 1480 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 231 then # line 1489 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 23 then # line 1480 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 39 then # line 1489 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 21 then # line 1 "NONE" begin case @act when 59 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 = 526 _goto_level = _again next end end when 60 then begin begin p = (( @te))-1; end diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 526 _goto_level = _again next end end when 65 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 755 _goto_level = _again next end end else begin begin p = (( @te))-1; end end end end when 41 then # line 1525 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 457 _goto_level = _again next end end end when 236 then # line 512 "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 237 then # line 1525 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 457 _goto_level = _again next end end end when 42 then # line 1525 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1 begin @cs = 457 _goto_level = _again next end end end when 40 then # line 1 "NONE" begin case @act when 72 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 = 747; begin p += 1 _goto_level = _out next end end when 73 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 457 _goto_level = _again next end end end end when 247 then # line 1552 "lib/parser/lexer.rl" begin @te = p+1 begin emit_do(true) @cs = 747; begin p += 1 _goto_level = _out next end end end when 240 then # line 1558 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 241 then # line 512 "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 242 then # line 1555 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 245 then # line 1558 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 251 then # line 1582 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 250 then # line 512 "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 259 then # line 1574 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 526 _goto_level = _again next end end end when 253 then # line 1576 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 257 then # line 1582 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 252 then # line 1 "NONE" begin case @act when 80 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 526; begin p += 1 _goto_level = _out next end end when 81 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 526 _goto_level = _again next end end end end when 287 then # line 1599 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-'.freeze emit(:tUMINUS_NUM, '-'.freeze, @ts, @ts + 1) @cs = 755; begin p += 1 _goto_level = _out next end end end end when 288 then # line 1619 "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 282 then # line 1626 "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 49 then # line 1633 "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 289 then # line 1679 "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 52 then # line 1693 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 755; begin p += 1 _goto_level = _out next end end end when 303 then # line 1724 "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 = 755 _goto_level = _again next end end end when 302 then # line 1734 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 290 then # line 1773 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 46 then # line 1793 "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 = 755; else @cs = (arg_or_cmdarg); end else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) @cs = 740; end begin p += 1 _goto_level = _out next end end end when 276 then # line 1839 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 161 _goto_level = _again next end end end when 50 then # line 1852 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 755 _goto_level = _again next end end end when 262 then # line 512 "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 286 then # line 1609 "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 283 then # line 1633 "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 281 then # line 1639 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 291 then # line 1693 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 755; begin p += 1 _goto_level = _out next end end end when 301 then # line 1734 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 307 then # line 1740 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 284 then # line 1773 "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 329 then # line 1196 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; 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 273 then # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 275 then # line 1839 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 161 _goto_level = _again next end end end when 278 then # line 1852 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 755 _goto_level = _again next end end end when 48 then # line 1639 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 55 then # line 1707 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 47 then # line 1836 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 51 then # line 1852 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 755 _goto_level = _again next end end end when 45 then # line 1 "NONE" begin case @act when 103 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 104 then begin begin p = (( @te))-1; end emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 502; begin p += 1 _goto_level = _out next end end when 105 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 747; begin p += 1 _goto_level = _out next end end when 107 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 755 _goto_level = _again next end end when 108 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 111 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 755 _goto_level = _again next end end end end when 337 then # line 1872 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 338 then # line 512 "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 339 then # line 1860 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 343 then # line 1872 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 58 then # line 1882 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 347 then # line 1887 "lib/parser/lexer.rl" begin @te = p+1 begin begin @cs = (push_literal(tok, tok, @ts)) _goto_level = _again next end end end when 346 then # line 1897 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 345 then # line 512 "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 349 then # line 1891 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 348 then # line 1897 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 57 then # line 1897 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 526 _goto_level = _again next end end end when 379 then # line 1908 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLAMBDA, '->'.freeze, @ts, @ts + 2) @lambda_stack.push @paren_nest @cs = 429; begin p += 1 _goto_level = _out next end end end when 72 then # line 1945 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 747; begin p += 1 _goto_level = _out next end end end when 357 then # line 2080 "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 60 then # line 2098 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 311 _goto_level = _again next end end end when 376 then # line 2105 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 436; begin p += 1 _goto_level = _out next end end end when 370 then # line 2132 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 526; begin p += 1 _goto_level = _out next end end end when 363 then # line 2136 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RBRACK.include?(tok) @cs = 494; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 375 then # line 2150 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 526; begin p += 1 _goto_level = _out next end end end when 361 then # line 2154 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tEH, '?'.freeze) @cs = 747; begin p += 1 _goto_level = _out next end end end when 358 then # line 2162 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 526; begin p += 1 _goto_level = _out next end end end when 360 then # line 2175 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSEMI, ';'.freeze) @cs = 747; begin p += 1 _goto_level = _out next end end end when 425 then # line 2178 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, :bare_backslash, nil, range(@ts, @ts + 1) p = p - 1; end end when 356 then # line 2184 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 355 then # line 512 "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 435 then # line 1941 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 316; begin p += 1 _goto_level = _out next end end end when 433 then # line 1945 "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 = 747; begin p += 1 _goto_level = _out next end end end when 432 then # line 1956 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 747; begin p += 1 _goto_level = _out next end end end when 382 then # line 2030 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, :no_dot_digit_literal end end when 422 then # line 2090 "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 374 then # line 2098 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 311 _goto_level = _again next end end end when 380 then # line 2105 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 436; begin p += 1 _goto_level = _out next end end end when 427 then # line 1196 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; 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 369 then # line 2132 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 526; begin p += 1 _goto_level = _out next end end end when 381 then # line 2162 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 526; begin p += 1 _goto_level = _out next end end end when 367 then # line 2169 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 373 then # line 2184 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 61 then # line 2030 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :error, :no_dot_digit_literal end end when 59 then # line 2184 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 62 then # line 1 "NONE" begin case @act when 124 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 = 747; begin p += 1 _goto_level = _out next end end when 125 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 316; begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 747; begin p += 1 _goto_level = _out next end end when 127 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 526; begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 747; begin p += 1 _goto_level = _out next end end when 129 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 502; begin p += 1 _goto_level = _out next end end when 130 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not'.freeze @cs = 526; begin p += 1 _goto_level = _out next end else @cs = 457; begin p += 1 _goto_level = _out next end end end when 131 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 132 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 133 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 135 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 136 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 137 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 139 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 143 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 144 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 = 457; begin p += 1 _goto_level = _out next end end end end when 76 then # line 2196 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 755 _goto_level = _again next end end end when 440 then # line 2199 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 161; begin p += 1 _goto_level = _out next end end end when 441 then # line 2199 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 161; begin p += 1 _goto_level = _out next end end end when 73 then # line 2199 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 161; begin p += 1 _goto_level = _out next end end end when 444 then # line 2209 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = 161 _goto_level = _again next end end end when 443 then # line 2217 "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 87 then # line 2227 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 931 _goto_level = _again next end end end when 2 then # line 2231 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 79 then # line 2234 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 747 _goto_level = _again next end end end when 80 then # line 512 "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 81 then # line 2224 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 86 then # line 2227 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 931 _goto_level = _again next end end end when 85 then # line 2234 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 747 _goto_level = _again next end end end when 1 then # line 2234 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 747 _goto_level = _again next end end end when 71 then # line 486 "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 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 91 then # line 486 "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 877 "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 = 755 _goto_level = _again next end end end when 277 then # line 486 "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 1839 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 161 _goto_level = _again next end end end when 445 then # line 486 "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 2209 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = 161 _goto_level = _again next end end end when 442 then # line 486 "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 2214 "lib/parser/lexer.rl" begin @te = p+1 end when 88 then # line 486 "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 2227 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 931 _goto_level = _again next end end end when 3 then # line 486 "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 2231 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 399 then # line 620 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2003 "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 398 then # line 621 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, chars)) } end # line 2003 "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 400 then # line 622 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2003 "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 393 then # line 626 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Float(chars))) } end # line 2062 "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 394 then # line 630 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2062 "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 395 then # line 631 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2062 "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 114 then # line 646 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 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 + 1 end end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 140 then # line 646 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 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 + 1 end end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 325 then # line 646 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 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 + 1 end end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 98 then # line 666 "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 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 124 then # line 666 "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 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 309 then # line 666 "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 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 101 then # line 673 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 127 then # line 673 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 312 then # line 673 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_escape end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 103 then # line 692 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 129 then # line 692 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 314 then # line 692 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 100 then # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 126 then # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 311 then # line 699 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 116 then # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 142 then # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 327 then # line 703 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 111 then # line 707 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 137 then # line 707 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 322 then # line 707 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 115 then # line 711 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 141 then # line 711 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 326 then # line 711 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 110 then # line 723 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 136 then # line 723 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 321 then # line 723 "lib/parser/lexer.rl" begin diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 113 then # line 734 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 139 then # line 734 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 324 then # line 734 "lib/parser/lexer.rl" begin diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 99 then # line 760 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 125 then # line 760 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 310 then # line 760 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 148 then # line 766 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 153 then # line 766 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 64 then # line 806 "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 486 "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 28 then # line 806 "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 1421 "lib/parser/lexer.rl" begin tm = p end when 30 then # line 806 "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 1437 "lib/parser/lexer.rl" begin tm = p end when 32 then # line 806 "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 1465 "lib/parser/lexer.rl" begin tm = p end when 177 then # line 806 "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 1296 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 196 then # line 806 "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 1314 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 204 then # line 806 "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 1346 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 31 then # line 806 "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 1475 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 235 then # line 806 "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 1480 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 227 then # line 806 "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 1486 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 246 then # line 806 "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 1555 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 258 then # line 806 "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 1576 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 254 then # line 806 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1579 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 755 _goto_level = _again next end end end when 274 then # line 806 "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 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 344 then # line 806 "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 1860 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 340 then # line 806 "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 1863 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @in_kwarg p = p - 1; begin @cs = 755 _goto_level = _again next end else begin @cs = 161 _goto_level = _again next end end end end when 353 then # line 806 "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 1891 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 350 then # line 806 "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 1894 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 161 _goto_level = _again next end end end when 426 then # line 806 "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 2169 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 368 then # line 806 "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 2172 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 928 _goto_level = _again next end end end when 82 then # line 806 "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 2224 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 226 then # line 977 "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 1390 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 755 _goto_level = _again next end else emit(:tLCURLY, '{'.freeze, @te - 1, @te) @cs = 747; begin p += 1 _goto_level = _out next end end end end when 248 then # line 977 "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 1548 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG, '{'.freeze) @cs = 747; end end when 336 then # line 977 "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 1751 "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 438 then # line 977 "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 1916 "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 = 747; begin p += 1 _goto_level = _out next end end end when 439 then # line 986 "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) 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 = (stack_pop); begin p += 1 _goto_level = _out next end end end end # line 2136 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RBRACK.include?(tok) @cs = 494; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 66 then # line 1108 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 69 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 486 "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 180 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1296 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 195 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1314 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 207 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1346 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 229 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1483 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 755 _goto_level = _again next end end end when 244 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1555 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 256 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1576 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 280 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1836 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 342 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1860 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 352 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1891 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 372 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2169 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 84 then # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2224 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 201 then # line 1152 "lib/parser/lexer.rl" begin tm = p end # line 1336 "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 292 then # line 1152 "lib/parser/lexer.rl" begin tm = p end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 265 then # line 1152 "lib/parser/lexer.rl" begin tm = p end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 365 then # line 1152 "lib/parser/lexer.rl" begin tm = p end # line 1 "NONE" begin case @act when 124 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 = 747; begin p += 1 _goto_level = _out next end end when 125 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 316; begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class'.freeze, @ts, @ts + 5) emit(:tLSHFT, '<<'.freeze, @te - 2, @te) @cs = 747; begin p += 1 _goto_level = _out next end end when 127 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 526; begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 747; begin p += 1 _goto_level = _out next end end when 129 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 502; begin p += 1 _goto_level = _out next end end when 130 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not'.freeze @cs = 526; begin p += 1 _goto_level = _out next end else @cs = 457; begin p += 1 _goto_level = _out next end end end when 131 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 132 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 133 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 135 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 136 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 137 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 139 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 143 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 144 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 = 457; begin p += 1 _goto_level = _out next end end end end when 202 then # line 1153 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1336 "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 293 then # line 1153 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 267 then # line 1153 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 366 then # line 1153 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2112 "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 = 457; begin p += 1 _goto_level = _out next end end end when 294 then # line 1158 "lib/parser/lexer.rl" begin tm = p end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 268 then # line 1158 "lib/parser/lexer.rl" begin tm = p end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 295 then # line 1159 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 269 then # line 1159 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 299 then # line 1160 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 272 then # line 1160 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 298 then # line 1161 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 271 then # line 1161 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1 "NONE" begin case @act when 103 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 104 then begin begin p = (( @te))-1; end emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 502; begin p += 1 _goto_level = _out next end end when 105 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 747; begin p += 1 _goto_level = _out next end end when 107 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 755 _goto_level = _again next end end when 108 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 429; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 111 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 755 _goto_level = _again next end end end end when 296 then # line 1162 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 270 then # line 1162 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1824 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 755 _goto_level = _again next end end end when 297 then # line 1167 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1685 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 755; begin p += 1 _goto_level = _out next end end end when 421 then # line 1172 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2094 "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 225 then # line 1178 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1384 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '['.freeze, @te - 1, @te) @cs = 526; begin p += 1 _goto_level = _out next end end end when 328 then # line 1178 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1763 "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 424 then # line 1178 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 2158 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK2, '['.freeze) @cs = 526; begin p += 1 _goto_level = _out next end end end when 217 then # line 1185 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1365 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if version?(18) emit(:tLPAREN2, '('.freeze, @te - 1, @te) @cs = 747; begin p += 1 _goto_level = _out next end else emit(:tLPAREN_ARG, '('.freeze, @te - 1, @te) @cs = 526; begin p += 1 _goto_level = _out next end end end end when 230 then # line 1185 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1378 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2, '('.freeze) @cs = 526; begin p += 1 _goto_level = _out next end end end when 238 then # line 1185 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1502 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '('.freeze, @te - 1, @te) if version?(18) @cs = 747; begin p += 1 _goto_level = _out next end else @cs = 526; begin p += 1 _goto_level = _out next end end end end when 285 then # line 1185 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1768 "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 377 then # line 1185 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 2132 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 526; begin p += 1 _goto_level = _out next end end end when 378 then # line 1191 "lib/parser/lexer.rl" begin @paren_nest -= 1 end # line 2136 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RBRACK.include?(tok) @cs = 494; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 54 then # line 1651 "lib/parser/lexer.rl" begin heredoc_e = p end # line 486 "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 300 then # line 1652 "lib/parser/lexer.rl" begin new_herebody_s = p end # line 1653 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin tok(@ts, heredoc_e) =~ /^<<(-?)(~?)(["'`]?)(.*)\3$/ indent = !$1.empty? || !$2.empty? dedent_body = !$2.empty? type = $3.empty? ? '<<"'.freeze : ('<<'.freeze + $3) delimiter = $4 if dedent_body && version?(18, 19, 20, 21, 22) emit(:tLSHFT, '<<'.freeze, @ts, @ts + 2) p = @ts + 1 @cs = 526; 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 305 then # line 1705 "lib/parser/lexer.rl" begin @escape = nil end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 332 then # line 1778 "lib/parser/lexer.rl" begin tm = p end # line 1779 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kRESCUE, 'rescue'.freeze, @ts, tm) p = tm - 1 @cs = 502; begin p += 1 _goto_level = _out next end end end when 412 then # line 1996 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 406 then # line 1997 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 409 then # line 1998 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 403 then # line 1999 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 418 then # line 2000 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 387 then # line 2001 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 419 then # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 75 then # line 2195 "lib/parser/lexer.rl" begin tm = p end # line 2196 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 755 _goto_level = _again next end end end when 8 then # line 1 "NONE" begin @te = p+1 end # line 486 "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 186 then # line 1 "NONE" begin @te = p+1 end # line 1255 "lib/parser/lexer.rl" begin @act = 31; end when 173 then # line 1 "NONE" begin @te = p+1 end # line 1259 "lib/parser/lexer.rl" begin @act = 32; end when 169 then # line 1 "NONE" begin @te = p+1 end # line 1263 "lib/parser/lexer.rl" begin @act = 33; end when 24 then # line 1 "NONE" begin @te = p+1 end # line 1425 "lib/parser/lexer.rl" begin @act = 59; end when 219 then # line 1 "NONE" begin @te = p+1 end # line 1438 "lib/parser/lexer.rl" begin @act = 60; end when 25 then # line 1 "NONE" begin @te = p+1 end # line 1475 "lib/parser/lexer.rl" begin @act = 65; end when 212 then # line 1 "NONE" begin @te = p+1 end # line 1480 "lib/parser/lexer.rl" begin @act = 66; end when 239 then # line 1 "NONE" begin @te = p+1 end # line 1512 "lib/parser/lexer.rl" begin @act = 72; end when 43 then # line 1 "NONE" begin @te = p+1 end # line 1525 "lib/parser/lexer.rl" begin @act = 73; end when 260 then # line 1 "NONE" begin @te = p+1 end # line 1570 "lib/parser/lexer.rl" begin @act = 80; end when 249 then # line 1 "NONE" begin @te = p+1 end # line 1574 "lib/parser/lexer.rl" begin @act = 81; end when 263 then # line 1 "NONE" begin @te = p+1 end # line 1773 "lib/parser/lexer.rl" begin @act = 103; end when 331 then # line 1 "NONE" begin @te = p+1 end # line 1779 "lib/parser/lexer.rl" begin @act = 104; end when 330 then # line 1 "NONE" begin @te = p+1 end # line 1785 "lib/parser/lexer.rl" begin @act = 105; end when 56 then # line 1 "NONE" begin @te = p+1 end # line 1824 "lib/parser/lexer.rl" begin @act = 107; end when 261 then # line 1 "NONE" begin @te = p+1 end # line 1196 "lib/parser/lexer.rl" begin @act = 108; end when 264 then # line 1 "NONE" begin @te = p+1 end # line 1852 "lib/parser/lexer.rl" begin @act = 111; end when 434 then # line 1 "NONE" begin @te = p+1 end # line 1916 "lib/parser/lexer.rl" begin @act = 124; end when 429 then # line 1 "NONE" begin @te = p+1 end # line 1941 "lib/parser/lexer.rl" begin @act = 125; end when 437 then # line 1 "NONE" begin @te = p+1 end # line 1951 "lib/parser/lexer.rl" begin @act = 127; end when 430 then # line 1 "NONE" begin @te = p+1 end # line 1956 "lib/parser/lexer.rl" begin @act = 128; end when 431 then # line 1 "NONE" begin @te = p+1 end # line 1960 "lib/parser/lexer.rl" begin @act = 129; end when 436 then # line 1 "NONE" begin @te = p+1 end # line 1964 "lib/parser/lexer.rl" begin @act = 130; end when 428 then # line 1 "NONE" begin @te = p+1 end # line 1975 "lib/parser/lexer.rl" begin @act = 131; end when 423 then # line 1 "NONE" begin @te = p+1 end # line 1989 "lib/parser/lexer.rl" begin @act = 132; end when 359 then # line 1 "NONE" begin @te = p+1 end # line 2003 "lib/parser/lexer.rl" begin @act = 133; end when 389 then # line 1 "NONE" begin @te = p+1 end # line 2047 "lib/parser/lexer.rl" begin @act = 136; end when 63 then # line 1 "NONE" begin @te = p+1 end # line 2062 "lib/parser/lexer.rl" begin @act = 137; end when 362 then # line 1 "NONE" begin @te = p+1 end # line 2090 "lib/parser/lexer.rl" begin @act = 139; end when 354 then # line 1 "NONE" begin @te = p+1 end # line 1196 "lib/parser/lexer.rl" begin @act = 143; end when 364 then # line 1 "NONE" begin @te = p+1 end # line 2112 "lib/parser/lexer.rl" begin @act = 144; end when 154 then # line 486 "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 877 "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 391 then # line 2059 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 625 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2062 "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 388 then # line 2060 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 625 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2062 "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 234 then # line 1 "NONE" begin @te = p+1 end # line 486 "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 1480 "lib/parser/lexer.rl" begin @act = 66; end when 33 then # line 1 "NONE" begin @te = p+1 end # line 806 "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 1475 "lib/parser/lexer.rl" begin @act = 65; end when 44 then # line 1 "NONE" begin @te = p+1 end # line 806 "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 1525 "lib/parser/lexer.rl" begin @act = 73; end when 70 then # line 1 "NONE" begin @te = p+1 end # line 1111 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1945 "lib/parser/lexer.rl" begin @act = 126; end when 35 then # line 1 "NONE" begin @te = p+1 end # line 1437 "lib/parser/lexer.rl" begin tm = p end # line 1438 "lib/parser/lexer.rl" begin @act = 60; end when 334 then # line 1 "NONE" begin @te = p+1 end # line 1778 "lib/parser/lexer.rl" begin tm = p end # line 1824 "lib/parser/lexer.rl" begin @act = 107; end when 333 then # line 1 "NONE" begin @te = p+1 end # line 1778 "lib/parser/lexer.rl" begin tm = p end # line 1196 "lib/parser/lexer.rl" begin @act = 108; end when 415 then # line 1 "NONE" begin @te = p+1 end # line 2000 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2003 "lib/parser/lexer.rl" begin @act = 133; end when 107 then # line 666 "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 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 133 then # line 666 "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 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 318 then # line 666 "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 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 105 then # line 693 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 131 then # line 693 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 839 "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) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end when 316 then # line 693 "lib/parser/lexer.rl" begin @escape = @source_buffer.slice(p - 1).chr end # line 677 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 681 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1707 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin value = @escape || tok(@ts + 1) if version?(18) if defined?(Encoding) emit(:tINTEGER, value.dup.force_encoding(Encoding::BINARY)[0].ord) else emit(:tINTEGER, value[0].ord) end else emit(:tCHARACTER, value) end @cs = 755; begin p += 1 _goto_level = _out next end end end when 410 then # line 1996 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 404 then # line 1997 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 407 then # line 1998 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 401 then # line 1999 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 413 then # line 2000 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 383 then # line 2001 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2003 "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 29 then # line 1 "NONE" begin @te = p+1 end # line 806 "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 1437 "lib/parser/lexer.rl" begin tm = p end # line 1438 "lib/parser/lexer.rl" begin @act = 60; end when 420 then # line 1 "NONE" begin @te = p+1 end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2035 "lib/parser/lexer.rl" begin @act = 135; end when 416 then # line 1 "NONE" begin @te = p+1 end # line 2000 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2035 "lib/parser/lexer.rl" begin @act = 135; end when 386 then # line 1 "NONE" begin @te = p+1 end # line 2001 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2002 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 619 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2035 "lib/parser/lexer.rl" begin @act = 135; end # line 20792 "lib/parser/lexer.rb" end end end if _goto_level <= _again case _lex_to_state_actions[ @cs] when 77 then # line 1 "NONE" begin @ts = nil; end # line 20802 "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 282 "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 if defined?(Encoding) def encode_escape(ord) ord.chr.force_encoding(@source_buffer.source.encoding) end else def encode_escape(ord) ord.chr end 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) if new_literal.words? if new_literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end elsif new_literal.backslash_delimited? if new_literal.interpolate? self.class.lex_en_interp_backslash_delimited else self.class.lex_en_plain_backslash_delimited end else if new_literal.interpolate? self.class.lex_en_interp_string else self.class.lex_en_plain_string end end end def literal @literal_stack.last end def pop_literal old_literal = @literal_stack.pop @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, } %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 2239 "lib/parser/lexer.rl" # % end