# -*- encoding:utf-8; warn-indent:false; frozen_string_literal: true -*- # line 1 "lib/parser/lexer.rl" # line 3 "lib/parser/lexer.rl" # # === BEFORE YOU START === # # Read the Ruby Hacking Guide chapter 11, available in English at # http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/ # # Remember two things about Ragel scanners: # # 1) Longest match wins. # # 2) If two matches have the same length, the first # in source code wins. # # General rules of making Ragel and Bison happy: # # * `p` (position) and `@te` contain the index of the character # they're pointing to ("current"), plus one. `@ts` contains the index # of the corresponding character. The code for extracting matched token is: # # @source[@ts...@te] # # * If your input is `foooooooobar` and the rule is: # # 'f' 'o'+ # # the result will be: # # foooooooobar # ^ ts=0 ^ p=te=9 # # * A Ragel lexer action should not emit more than one token, unless # you know what you are doing. # # * All Ragel commands (fnext, fgoto, ...) end with a semicolon. # # * If an action emits the token and transitions to another state, use # these Ragel commands: # # emit($whatever) # fnext $next_state; fbreak; # # If you perform `fgoto` in an action which does not emit a token nor # rewinds the stream pointer, the parser's side-effectful, # context-sensitive lookahead actions will break in a hard to detect # and debug way. # # * If an action does not emit a token: # # fgoto $next_state; # # * If an action features lookbehind, i.e. matches characters with the # intent of passing them to another action: # # p = @ts - 1 # fgoto $next_state; # # or, if the lookbehind consists of a single character: # # fhold; fgoto $next_state; # # * Ragel merges actions. So, if you have `e_lparen = '(' %act` and # `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result # _will_ invoke the action `act`. # # e_something stands for "something with **e**mbedded action". # # * EOF is explicit and is matched by `c_eof`. If you want to introspect # the state of the lexer, add this rule to the state: # # c_eof => do_eof; # # * If you proceed past EOF, the lexer will complain: # # NoMethodError: undefined method `ord' for nil:NilClass # class Parser::Lexer # line 85 "lib/parser/lexer.rb" class << self attr_accessor :_lex_trans_keys private :_lex_trans_keys, :_lex_trans_keys= end self._lex_trans_keys = [ 0, 0, 101, 101, 103, 103, 105, 105, 110, 110, 69, 69, 78, 78, 68, 68, 95, 95, 95, 95, 0, 26, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 0, 127, 58, 58, 60, 60, 62, 62, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 115, 115, 99, 99, 117, 117, 101, 101, 108, 116, 101, 101, 115, 115, 115, 115, 105, 105, 108, 108, 105, 105, 108, 108, 58, 58, 0, 127, 10, 10, 0, 127, 58, 58, 98, 98, 101, 101, 103, 103, 105, 105, 110, 110, 0, 122, 61, 61, 0, 127, 0, 127, 61, 126, 0, 127, 0, 127, 93, 93, 0, 127, 0, 127, 10, 10, 10, 34, 10, 10, 10, 39, 0, 127, 10, 96, 0, 45, 0, 77, 0, 77, 0, 92, 0, 26, 0, 26, 0, 45, 0, 99, 0, 26, 67, 99, 45, 45, 0, 92, 0, 77, 0, 102, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 58, 58, 58, 0, 127, 43, 57, 48, 57, 48, 57, 48, 57, 48, 57, 0, 127, 58, 58, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 9, 92, 60, 60, 10, 10, 9, 46, 46, 46, 0, 95, 9, 32, 0, 0, 10, 10, 10, 10, 98, 98, 9, 32, 10, 10, 95, 95, 0, 92, 9, 32, 36, 123, 0, 127, 48, 57, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 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, 65, 122, 65, 122, 36, 64, 0, 127, 48, 57, 0, 127, 0, 127, 0, 127, 0, 127, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 93, 93, 10, 10, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 124, 124, 0, 127, 0, 127, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 61, 61, 0, 0, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 93, 93, 10, 10, 124, 124, 0, 126, 0, 127, 0, 61, 9, 61, 9, 61, 0, 0, 9, 61, 9, 62, 46, 46, 46, 46, 58, 58, 9, 32, 0, 0, 0, 127, 0, 0, 9, 124, 0, 0, 10, 10, 10, 10, 0, 0, 9, 61, 58, 58, 60, 60, 62, 62, 9, 32, 10, 10, 0, 127, 102, 102, 101, 101, 110, 110, 104, 104, 0, 127, 0, 127, 0, 127, 0, 0, 0, 127, 10, 10, 0, 123, 9, 32, 10, 10, 10, 10, 10, 10, 0, 0, 111, 111, 0, 0, 0, 127, 0, 127, 9, 32, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 58, 61, 0, 0, 61, 126, 61, 61, 0, 0, 0, 0, 0, 0, 58, 58, 9, 32, 61, 61, 9, 32, 61, 126, 10, 10, 10, 10, 65, 122, 0, 122, 38, 61, 0, 0, 42, 61, 61, 61, 48, 61, 48, 62, 46, 46, 46, 46, 0, 26, 0, 127, 0, 127, 61, 61, 0, 0, 61, 126, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 126, 0, 127, 48, 57, 38, 38, 42, 42, 64, 64, 60, 61, 62, 62, 61, 61, 61, 62, 124, 124, 60, 61, 0, 0, 62, 62, 61, 126, 61, 62, 0, 122, 0, 0, 0, 127, 0, 127, 0, 120, 0, 0, 0, 0, 48, 55, 48, 55, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 45, 45, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45, 0, 92, 0, 92, 0, 0, 0, 0, 0, 92, 0, 45, 10, 10, 0, 92, 0, 123, 0, 26, 0, 26, 0, 26, 0, 0, 0, 102, 0, 102, 0, 102, 0, 0, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 0, 0, 125, 0, 125, 0, 0, 0, 125, 0, 26, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 125, 0, 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, 0, 0, 9, 32, 0, 0, 61, 126, 10, 10, 10, 10, 0, 127, 0, 127, 48, 57, 61, 61, 38, 61, 0, 0, 0, 0, 42, 61, 61, 62, 46, 57, 46, 46, 48, 101, 48, 95, 46, 120, 48, 114, 43, 57, 48, 105, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 105, 114, 0, 0, 105, 105, 0, 0, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 48, 114, 46, 114, 48, 114, 46, 114, 48, 114, 58, 58, 60, 61, 62, 62, 61, 126, 61, 61, 61, 62, 0, 127, 0, 127, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 10, 10, 0, 0, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 9, 92, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 127, 0, 0, 61, 124, 0, 0, 9, 46, 9, 46, 46, 46, 10, 61, 10, 10, 10, 101, 10, 110, 10, 100, 10, 10, 0 ] class << self attr_accessor :_lex_key_spans private :_lex_key_spans, :_lex_key_spans= end self._lex_key_spans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 128, 1, 1, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 128, 1, 1, 1, 1, 1, 1, 123, 1, 128, 128, 66, 128, 128, 1, 128, 128, 1, 25, 1, 30, 128, 87, 46, 78, 78, 93, 27, 27, 46, 100, 27, 33, 1, 93, 78, 103, 128, 128, 128, 128, 128, 128, 1, 1, 128, 15, 10, 10, 10, 10, 128, 1, 84, 84, 84, 84, 84, 84, 1, 1, 38, 1, 96, 24, 0, 1, 1, 1, 24, 1, 1, 93, 24, 88, 128, 10, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 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, 58, 58, 29, 128, 10, 128, 128, 128, 128, 24, 0, 66, 1, 1, 128, 128, 10, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 128, 128, 128, 128, 128, 128, 1, 1, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 1, 128, 128, 24, 1, 1, 1, 0, 128, 128, 1, 0, 0, 24, 0, 66, 1, 1, 1, 1, 1, 2, 1, 66, 1, 2, 128, 1, 1, 1, 127, 128, 62, 53, 53, 0, 53, 54, 1, 1, 1, 24, 0, 128, 0, 116, 0, 1, 1, 0, 53, 1, 1, 1, 24, 1, 128, 1, 1, 1, 1, 128, 128, 128, 0, 128, 1, 124, 24, 1, 1, 1, 0, 1, 0, 128, 128, 24, 0, 1, 1, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 4, 0, 66, 1, 0, 0, 0, 1, 24, 1, 24, 66, 1, 1, 58, 123, 24, 0, 20, 1, 14, 15, 1, 1, 27, 128, 128, 1, 0, 66, 2, 0, 0, 0, 0, 0, 66, 128, 10, 1, 1, 1, 2, 1, 1, 2, 1, 2, 0, 1, 66, 2, 123, 0, 128, 128, 121, 0, 0, 8, 8, 0, 0, 93, 0, 0, 0, 93, 1, 0, 0, 0, 93, 46, 93, 93, 0, 0, 93, 46, 1, 93, 124, 27, 27, 27, 0, 103, 103, 103, 0, 126, 126, 126, 126, 126, 0, 126, 126, 0, 126, 27, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 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, 0, 24, 0, 66, 1, 1, 128, 128, 10, 1, 24, 0, 0, 20, 2, 12, 1, 54, 48, 75, 67, 15, 58, 0, 1, 0, 67, 67, 67, 67, 10, 0, 1, 0, 67, 67, 67, 67, 67, 67, 67, 67, 69, 67, 69, 67, 1, 2, 1, 66, 1, 2, 128, 128, 0, 128, 128, 128, 128, 128, 128, 0, 1, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 84, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 64, 0, 38, 38, 1, 52, 1, 92, 101, 91, 1 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 46, 175, 304, 433, 562, 609, 688, 767, 861, 889, 917, 964, 1065, 1093, 1127, 1129, 1223, 1302, 1406, 1535, 1664, 1793, 1922, 1969, 2048, 2127, 2221, 2249, 2277, 2324, 2425, 2453, 2487, 2489, 2583, 2662, 2766, 2895, 3024, 3153, 3282, 3411, 3540, 3542, 3671, 3673, 3675, 3677, 3679, 3808, 3937, 4066, 4195, 4324, 4453, 4582, 4711, 4840, 4969, 5098, 5227, 5356, 5485, 5614, 5743, 5872, 6001, 6003, 6005, 6007, 6009, 6019, 6021, 6023, 6025, 6027, 6029, 6031, 6033, 6035, 6164, 6166, 6295, 6297, 6299, 6301, 6303, 6305, 6307, 6431, 6433, 6562, 6691, 6758, 6887, 7016, 7018, 7147, 7276, 7278, 7304, 7306, 7337, 7466, 7554, 7601, 7680, 7759, 7853, 7881, 7909, 7956, 8057, 8085, 8119, 8121, 8215, 8294, 8398, 8527, 8656, 8785, 8914, 9043, 9172, 9174, 9176, 9305, 9321, 9332, 9343, 9354, 9365, 9494, 9496, 9581, 9666, 9751, 9836, 9921, 10006, 10008, 10010, 10049, 10051, 10148, 10173, 10174, 10176, 10178, 10180, 10205, 10207, 10209, 10303, 10328, 10417, 10546, 10557, 10679, 10680, 10681, 10690, 10699, 10700, 10701, 10795, 10796, 10797, 10798, 10892, 10894, 10895, 10896, 10897, 10991, 11038, 11132, 11226, 11227, 11228, 11322, 11369, 11371, 11465, 11590, 11618, 11646, 11674, 11675, 11779, 11883, 11987, 11988, 12115, 12242, 12369, 12496, 12623, 12624, 12751, 12878, 12879, 13006, 13034, 13161, 13288, 13415, 13542, 13669, 13796, 13923, 14050, 14177, 14178, 14305, 14306, 14362, 14363, 14457, 14546, 14675, 14686, 14808, 14809, 14810, 14819, 14828, 14829, 14830, 14924, 14925, 14926, 14927, 15021, 15023, 15024, 15025, 15026, 15120, 15167, 15261, 15355, 15356, 15357, 15451, 15498, 15500, 15594, 15719, 15747, 15775, 15803, 15804, 15908, 16012, 16116, 16117, 16244, 16371, 16498, 16625, 16752, 16753, 16880, 17007, 17008, 17135, 17163, 17290, 17417, 17544, 17671, 17798, 17925, 18052, 18179, 18306, 18307, 18434, 18435, 18491, 18492, 18586, 18611, 18639, 18733, 18761, 18820, 18879, 18909, 19038, 19049, 19178, 19307, 19436, 19565, 19590, 19591, 19658, 19660, 19662, 19791, 19920, 19931, 19933, 19935, 19937, 19939, 19942, 19944, 20011, 20013, 20016, 20145, 20274, 20403, 20532, 20661, 20790, 20919, 20921, 20923, 21052, 21181, 21310, 21439, 21568, 21697, 21826, 21955, 22084, 22213, 22342, 22471, 22600, 22729, 22858, 22987, 23116, 23245, 23374, 23503, 23632, 23761, 23890, 24019, 24148, 24277, 24406, 24535, 24664, 24793, 24922, 25051, 25180, 25309, 25438, 25567, 25696, 25825, 25954, 26083, 26212, 26341, 26470, 26599, 26728, 26857, 26986, 27115, 27244, 27373, 27502, 27631, 27760, 27889, 28018, 28147, 28276, 28405, 28534, 28663, 28792, 28921, 29050, 29179, 29308, 29437, 29566, 29695, 29824, 29953, 30082, 30211, 30340, 30469, 30598, 30727, 30856, 30985, 31114, 31243, 31372, 31501, 31630, 31632, 31761, 31890, 31915, 31917, 31919, 31921, 31922, 32051, 32180, 32182, 32183, 32184, 32209, 32210, 32277, 32279, 32281, 32283, 32285, 32287, 32290, 32292, 32359, 32361, 32364, 32493, 32495, 32497, 32499, 32627, 32756, 32819, 32873, 32927, 32928, 32982, 33037, 33039, 33041, 33043, 33068, 33069, 33198, 33199, 33316, 33317, 33319, 33321, 33322, 33376, 33378, 33380, 33382, 33407, 33409, 33538, 33540, 33542, 33544, 33546, 33675, 33804, 33933, 33934, 34063, 34065, 34190, 34215, 34217, 34219, 34221, 34222, 34224, 34225, 34354, 34483, 34508, 34509, 34511, 34513, 34515, 34516, 34645, 34774, 34903, 35032, 35161, 35290, 35419, 35548, 35677, 35806, 35935, 36064, 36193, 36322, 36451, 36580, 36709, 36838, 36843, 36844, 36911, 36913, 36914, 36915, 36916, 36918, 36943, 36945, 36970, 37037, 37039, 37041, 37100, 37224, 37249, 37250, 37271, 37273, 37288, 37304, 37306, 37308, 37336, 37465, 37594, 37596, 37597, 37664, 37667, 37668, 37669, 37670, 37671, 37672, 37739, 37868, 37879, 37881, 37883, 37885, 37888, 37890, 37892, 37895, 37897, 37900, 37901, 37903, 37970, 37973, 38097, 38098, 38227, 38356, 38478, 38479, 38480, 38489, 38498, 38499, 38500, 38594, 38595, 38596, 38597, 38691, 38693, 38694, 38695, 38696, 38790, 38837, 38931, 39025, 39026, 39027, 39121, 39168, 39170, 39264, 39389, 39417, 39445, 39473, 39474, 39578, 39682, 39786, 39787, 39914, 40041, 40168, 40295, 40422, 40423, 40550, 40677, 40678, 40805, 40833, 40960, 41087, 41214, 41341, 41468, 41595, 41722, 41849, 41976, 42103, 42230, 42357, 42484, 42611, 42612, 42613, 42669, 42670, 42799, 42928, 43057, 43058, 43060, 43061, 43190, 43319, 43448, 43577, 43706, 43835, 43964, 44093, 44222, 44351, 44480, 44609, 44738, 44867, 44996, 45125, 45254, 45383, 45512, 45641, 45770, 45899, 46028, 46157, 46286, 46415, 46544, 46673, 46802, 46931, 47060, 47189, 47318, 47447, 47576, 47705, 47834, 47963, 48092, 48221, 48350, 48479, 48608, 48737, 48866, 48995, 49124, 49253, 49382, 49511, 49640, 49769, 49898, 50027, 50156, 50285, 50414, 50543, 50672, 50801, 50868, 50997, 51126, 51255, 51384, 51513, 51642, 51771, 51900, 52029, 52158, 52287, 52416, 52545, 52674, 52803, 52932, 53061, 53190, 53319, 53448, 53577, 53706, 53835, 53964, 54093, 54094, 54159, 54253, 54278, 54279, 54281, 54283, 54285, 54286, 54415, 54544, 54569, 54570, 54572, 54574, 54576, 54577, 54706, 54835, 54837, 54838, 54839, 54864, 54865, 54932, 54934, 54936, 55065, 55194, 55205, 55207, 55232, 55233, 55234, 55255, 55258, 55271, 55273, 55328, 55377, 55453, 55521, 55537, 55596, 55597, 55599, 55600, 55668, 55736, 55804, 55872, 55883, 55884, 55886, 55887, 55955, 56023, 56091, 56159, 56227, 56295, 56363, 56431, 56501, 56569, 56639, 56707, 56709, 56712, 56714, 56781, 56783, 56786, 56915, 57044, 57045, 57174, 57303, 57432, 57561, 57690, 57819, 57820, 57822, 57823, 57952, 58081, 58210, 58339, 58468, 58597, 58726, 58855, 58984, 59113, 59242, 59371, 59500, 59629, 59758, 59887, 60016, 60145, 60274, 60403, 60532, 60661, 60790, 60919, 61048, 61177, 61306, 61435, 61564, 61693, 61822, 61951, 62080, 62209, 62338, 62467, 62596, 62681, 62810, 62939, 63068, 63197, 63326, 63455, 63584, 63713, 63842, 63971, 64100, 64229, 64358, 64487, 64616, 64745, 64874, 65003, 65132, 65261, 65390, 65519, 65648, 65777, 65906, 66035, 66164, 66293, 66422, 66551, 66680, 66809, 66938, 67067, 67196, 67325, 67454, 67583, 67712, 67841, 67970, 68099, 68228, 68357, 68486, 68615, 68744, 68873, 69002, 69131, 69260, 69389, 69518, 69647, 69776, 69905, 70034, 70163, 70292, 70421, 70550, 70679, 70808, 70937, 71066, 71067, 71132, 71133, 71172, 71211, 71213, 71266, 71268, 71361, 71463, 71555 ] class << self attr_accessor :_lex_indicies private :_lex_indicies, :_lex_indicies= end self._lex_indicies = [ 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 12, 14, 12, 14, 14, 12, 12, 14, 14, 14, 15, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 14, 12, 12, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 14, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 17, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 13, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 21, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 18, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 28, 28, 28, 18, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 18, 28, 18, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 30, 19, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 34, 31, 31, 31, 31, 31, 31, 35, 31, 18, 31, 31, 31, 18, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 18, 31, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 37, 18, 37, 18, 18, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 18, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 18, 21, 21, 21, 18, 21, 21, 21, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 24, 21, 18, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 18, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 43, 45, 43, 45, 45, 43, 43, 45, 45, 45, 46, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 45, 43, 43, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 45, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 45, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 43, 43, 43, 43, 45, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 44, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 50, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54, 52, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 58, 56, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 59, 59, 59, 49, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 59, 49, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 61, 50, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 63, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 66, 62, 49, 62, 62, 62, 49, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 49, 62, 67, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68, 49, 68, 49, 49, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 49, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 71, 69, 49, 52, 52, 52, 49, 52, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 49, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55, 52, 49, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 49, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 72, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 75, 75, 76, 75, 76, 75, 75, 76, 76, 75, 75, 75, 77, 75, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 75, 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 75, 76, 76, 74, 75, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 76, 76, 76, 75, 76, 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 79, 76, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 79, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 76, 76, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 81, 76, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 76, 76, 76, 76, 76, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 83, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 86, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 84, 84, 84, 84, 86, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 85, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84, 85, 87, 84, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 90, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 88, 88, 88, 88, 90, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 89, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 89, 91, 88, 93, 92, 94, 92, 95, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 97, 92, 97, 97, 97, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 97, 92, 92, 92, 92, 98, 99, 92, 100, 92, 101, 102, 103, 104, 105, 98, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 106, 92, 107, 103, 108, 109, 92, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 110, 111, 103, 112, 96, 92, 96, 96, 96, 96, 96, 96, 96, 96, 113, 96, 96, 96, 96, 96, 96, 96, 96, 114, 96, 96, 115, 96, 116, 96, 96, 96, 117, 118, 92, 112, 92, 96, 92, 92, 92, 92, 92, 92, 92, 92, 92, 119, 92, 119, 119, 119, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 119, 92, 92, 92, 92, 120, 121, 92, 122, 92, 123, 124, 125, 126, 127, 120, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 128, 92, 129, 125, 130, 131, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 132, 133, 125, 94, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 134, 89, 89, 89, 89, 89, 89, 89, 89, 135, 89, 89, 136, 89, 137, 89, 89, 89, 138, 139, 92, 94, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 141, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 142, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 143, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 144, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 145, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 146, 89, 89, 89, 89, 89, 89, 89, 147, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 148, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 149, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 150, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 140, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 151, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 152, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 92, 92, 92, 92, 90, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 89, 92, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 144, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, 92, 92, 92, 92, 89, 154, 153, 155, 153, 156, 153, 125, 153, 157, 153, 153, 153, 153, 153, 153, 153, 158, 153, 159, 153, 160, 153, 125, 153, 161, 153, 125, 153, 162, 153, 156, 153, 164, 163, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167, 165, 167, 167, 167, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 167, 165, 165, 165, 165, 165, 165, 165, 168, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 165, 169, 165, 165, 166, 165, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 165, 165, 165, 165, 165, 166, 171, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 173, 165, 173, 173, 173, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 173, 165, 165, 165, 165, 165, 165, 165, 174, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 165, 175, 165, 165, 172, 165, 172, 172, 172, 176, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 165, 165, 165, 165, 165, 172, 177, 178, 180, 179, 181, 179, 182, 179, 183, 179, 184, 179, 185, 186, 186, 186, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 188, 177, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, 189, 191, 189, 191, 191, 189, 189, 191, 191, 191, 192, 191, 191, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 191, 191, 191, 191, 191, 191, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 191, 189, 189, 190, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 191, 189, 190, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 189, 189, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 191, 189, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 189, 189, 189, 189, 189, 191, 194, 191, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 191, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 195, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 190, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 189, 190, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 190, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 189, 189, 189, 189, 189, 190, 194, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 197, 189, 189, 189, 189, 198, 189, 189, 189, 189, 189, 199, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 189, 189, 189, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 196, 200, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 199, 189, 196, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 201, 202, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 201, 205, 204, 189, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 206, 197, 203, 202, 189, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 206, 198, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 197, 189, 189, 189, 189, 198, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 196, 200, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 189, 189, 189, 189, 189, 196, 189, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 206, 200, 207, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 208, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 212, 210, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 213, 210, 207, 214, 214, 214, 207, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 207, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 207, 217, 217, 217, 207, 217, 217, 217, 217, 217, 218, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 207, 217, 207, 217, 217, 217, 207, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 207, 217, 207, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 219, 208, 207, 220, 220, 220, 207, 220, 220, 220, 220, 220, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 207, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 223, 220, 220, 220, 220, 220, 220, 224, 220, 207, 220, 220, 220, 207, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 207, 220, 225, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 226, 207, 226, 207, 207, 227, 227, 227, 207, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 207, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 229, 227, 207, 210, 210, 210, 207, 210, 210, 210, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 207, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 213, 210, 207, 230, 230, 230, 207, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 207, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 230, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 177, 177, 235, 177, 236, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 232, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 177, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 237, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 232, 232, 238, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 239, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 233, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 189, 189, 235, 189, 236, 189, 232, 232, 232, 239, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 232, 189, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 189, 189, 189, 189, 189, 232, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 242, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 240, 240, 240, 240, 242, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 241, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240, 241, 243, 240, 240, 244, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 246, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 245, 245, 245, 245, 246, 248, 247, 248, 247, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 247, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 247, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 245, 245, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 254, 245, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 245, 245, 245, 245, 245, 254, 255, 251, 256, 257, 256, 256, 256, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 256, 251, 251, 258, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 259, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 260, 251, 261, 262, 261, 261, 261, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 261, 251, 251, 263, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 264, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 265, 251, 267, 268, 267, 267, 267, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 267, 266, 266, 269, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 270, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 271, 266, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 276, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 278, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 273, 279, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 276, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 280, 251, 257, 251, 282, 281, 282, 282, 282, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 281, 281, 281, 281, 281, 283, 281, 281, 281, 281, 281, 281, 281, 284, 281, 285, 281, 287, 286, 286, 286, 287, 286, 286, 286, 286, 288, 289, 288, 288, 288, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 286, 286, 286, 286, 286, 288, 286, 286, 290, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 291, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 292, 286, 286, 293, 286, 288, 294, 288, 288, 288, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 288, 294, 295, 296, 297, 298, 299, 301, 300, 303, 304, 303, 303, 303, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 302, 289, 300, 305, 300, 307, 306, 306, 306, 307, 306, 306, 306, 306, 308, 309, 308, 308, 308, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 306, 306, 306, 306, 306, 308, 306, 306, 310, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 311, 306, 308, 312, 308, 308, 308, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 308, 312, 314, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 315, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 316, 313, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 317, 317, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 13, 317, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 317, 317, 317, 317, 317, 13, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 317, 320, 319, 319, 319, 320, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 320, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 321, 321, 321, 321, 321, 321, 321, 321, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 322, 319, 319, 319, 319, 319, 319, 319, 319, 319, 323, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 324, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 325, 319, 319, 326, 319, 327, 328, 330, 330, 330, 330, 330, 330, 330, 330, 329, 331, 331, 331, 331, 331, 331, 331, 331, 329, 329, 332, 332, 38, 38, 38, 332, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 332, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 333, 38, 334, 335, 336, 336, 38, 38, 38, 336, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 336, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 337, 38, 37, 336, 338, 339, 340, 340, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 340, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 341, 25, 336, 19, 19, 19, 336, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 336, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 342, 19, 332, 25, 25, 25, 332, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 332, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 332, 343, 343, 343, 332, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 332, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 344, 343, 345, 346, 346, 343, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 346, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 347, 343, 346, 19, 19, 19, 346, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 346, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 342, 19, 348, 346, 346, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 346, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 25, 349, 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 352, 350, 349, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 349, 353, 349, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 349, 354, 349, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 349, 355, 349, 349, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 349, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, 353, 349, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 349, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 357, 357, 357, 357, 357, 354, 349, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 349, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 358, 358, 358, 358, 358, 358, 355, 359, 362, 361, 361, 361, 362, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 362, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 363, 363, 363, 363, 363, 363, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 353, 361, 362, 364, 364, 364, 362, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 362, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 366, 364, 362, 367, 367, 367, 362, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 362, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, 368, 368, 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 369, 367, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 372, 362, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 372, 371, 362, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 362, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 360, 371, 360, 362, 368, 368, 368, 362, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 362, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 355, 368, 360, 355, 355, 355, 360, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 360, 355, 362, 364, 364, 364, 362, 364, 364, 364, 364, 373, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 362, 364, 364, 364, 364, 364, 373, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 374, 374, 374, 374, 374, 374, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 375, 364, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 376, 376, 376, 376, 376, 376, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 370, 370, 370, 370, 370, 370, 370, 377, 377, 377, 377, 377, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 377, 377, 377, 377, 377, 377, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 378, 378, 378, 378, 378, 378, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 370, 370, 370, 370, 370, 370, 370, 379, 379, 379, 379, 379, 379, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 379, 379, 379, 379, 379, 379, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 380, 380, 380, 380, 380, 380, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 381, 381, 381, 381, 381, 381, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 373, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, 370, 362, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 362, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 382, 382, 382, 382, 382, 382, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 372, 370, 383, 362, 367, 367, 367, 362, 367, 367, 367, 367, 373, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 362, 367, 367, 367, 367, 367, 373, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 367, 367, 367, 367, 367, 367, 367, 378, 378, 378, 378, 378, 378, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 378, 378, 378, 378, 378, 378, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 375, 367, 384, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 386, 386, 386, 386, 386, 386, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 386, 386, 386, 386, 386, 386, 385, 385, 388, 387, 387, 387, 388, 387, 387, 387, 387, 387, 389, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 388, 387, 387, 387, 387, 387, 387, 387, 387, 390, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 391, 387, 393, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 394, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 395, 392, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 396, 396, 396, 396, 396, 396, 396, 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, 396, 396, 396, 396, 44, 396, 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, 396, 396, 396, 396, 396, 44, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 396, 399, 398, 398, 398, 399, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 399, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 400, 400, 400, 400, 400, 400, 400, 400, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 401, 398, 398, 398, 398, 398, 398, 398, 398, 398, 402, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 403, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 404, 398, 398, 405, 398, 406, 407, 409, 409, 409, 409, 409, 409, 409, 409, 408, 410, 410, 410, 410, 410, 410, 410, 410, 408, 408, 411, 411, 69, 69, 69, 411, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 411, 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, 412, 69, 413, 414, 415, 415, 69, 69, 69, 415, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 415, 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, 416, 69, 68, 415, 417, 418, 419, 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, 420, 56, 415, 50, 50, 50, 415, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 415, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 421, 50, 411, 56, 56, 56, 411, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 411, 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, 411, 422, 422, 422, 411, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 411, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 423, 422, 424, 425, 425, 422, 422, 422, 425, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 425, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, 426, 422, 425, 50, 50, 50, 425, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 425, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 421, 50, 427, 425, 425, 56, 56, 56, 425, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 425, 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, 428, 429, 429, 429, 428, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 428, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 429, 429, 429, 429, 429, 429, 429, 430, 430, 430, 430, 430, 430, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 430, 430, 430, 430, 430, 430, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, 431, 429, 428, 432, 432, 432, 428, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 428, 432, 428, 433, 433, 433, 428, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 428, 433, 428, 434, 434, 434, 428, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 428, 434, 428, 428, 432, 432, 432, 428, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 428, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 432, 432, 432, 432, 432, 432, 432, 435, 435, 435, 435, 435, 435, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 435, 435, 435, 435, 435, 435, 432, 428, 433, 433, 433, 428, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 428, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, 433, 433, 433, 433, 433, 433, 433, 436, 436, 436, 436, 436, 436, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 436, 436, 436, 436, 436, 436, 433, 428, 434, 434, 434, 428, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 428, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 434, 434, 434, 434, 434, 434, 434, 437, 437, 437, 437, 437, 437, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 437, 437, 437, 437, 437, 437, 434, 438, 441, 440, 440, 440, 441, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 441, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 440, 440, 440, 440, 440, 440, 440, 442, 442, 442, 442, 442, 442, 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, 442, 442, 442, 442, 442, 442, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 432, 440, 441, 443, 443, 443, 441, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 441, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 444, 444, 444, 444, 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 445, 443, 441, 446, 446, 446, 441, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 441, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 447, 447, 447, 447, 447, 447, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 448, 446, 441, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, 450, 450, 450, 450, 450, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 451, 441, 450, 450, 450, 441, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 441, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 451, 450, 441, 450, 450, 450, 441, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 441, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, 439, 450, 439, 441, 447, 447, 447, 441, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 441, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 434, 447, 439, 434, 434, 434, 439, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 439, 434, 441, 443, 443, 443, 441, 443, 443, 443, 443, 452, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 441, 443, 443, 443, 443, 443, 452, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 443, 443, 443, 443, 443, 443, 443, 453, 453, 453, 453, 453, 453, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 453, 453, 453, 453, 453, 453, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 454, 443, 441, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, 449, 449, 449, 449, 449, 449, 449, 455, 455, 455, 455, 455, 455, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 455, 455, 455, 455, 455, 455, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 449, 449, 449, 449, 449, 449, 449, 456, 456, 456, 456, 456, 456, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 456, 456, 456, 456, 456, 456, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 449, 449, 449, 449, 449, 449, 457, 457, 457, 457, 457, 457, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 457, 457, 457, 457, 457, 457, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 449, 449, 449, 449, 449, 449, 449, 458, 458, 458, 458, 458, 458, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 458, 458, 458, 458, 458, 458, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 459, 459, 459, 459, 459, 459, 459, 459, 459, 459, 449, 449, 449, 449, 449, 449, 449, 459, 459, 459, 459, 459, 459, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 459, 459, 459, 459, 459, 459, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 449, 449, 449, 449, 449, 449, 449, 460, 460, 460, 460, 460, 460, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 460, 460, 460, 460, 460, 460, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 452, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 454, 449, 441, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 441, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 461, 461, 461, 461, 461, 461, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 451, 449, 462, 441, 446, 446, 446, 441, 446, 446, 446, 446, 452, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 441, 446, 446, 446, 446, 446, 452, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 446, 446, 446, 446, 446, 446, 446, 457, 457, 457, 457, 457, 457, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 457, 457, 457, 457, 457, 457, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 454, 446, 463, 465, 465, 465, 465, 465, 465, 465, 465, 465, 465, 464, 464, 464, 464, 464, 464, 464, 465, 465, 465, 465, 465, 465, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, 465, 465, 465, 465, 465, 465, 464, 464, 467, 466, 466, 466, 467, 466, 466, 466, 466, 468, 469, 468, 468, 468, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 467, 466, 466, 466, 466, 466, 468, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 470, 466, 468, 471, 468, 468, 468, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 468, 471, 472, 473, 473, 473, 472, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 472, 473, 475, 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, 475, 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, 474, 474, 474, 474, 474, 474, 477, 474, 478, 479, 479, 479, 478, 479, 479, 479, 479, 479, 480, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 478, 479, 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, 481, 481, 481, 481, 481, 481, 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, 481, 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, 483, 483, 483, 483, 483, 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, 483, 484, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 485, 76, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 486, 486, 486, 486, 486, 486, 486, 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, 486, 486, 486, 486, 74, 486, 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, 486, 486, 486, 486, 486, 74, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 486, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 487, 487, 487, 487, 487, 487, 487, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 487, 487, 487, 487, 79, 487, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 487, 487, 487, 487, 487, 79, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 488, 488, 488, 488, 488, 488, 488, 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, 488, 488, 488, 488, 81, 488, 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, 488, 488, 488, 488, 488, 81, 490, 491, 491, 491, 490, 491, 491, 491, 491, 492, 493, 492, 492, 492, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 490, 491, 491, 491, 491, 491, 492, 494, 491, 495, 496, 497, 498, 491, 491, 491, 499, 500, 491, 500, 491, 497, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, 501, 491, 502, 503, 504, 491, 491, 505, 506, 505, 505, 507, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 508, 509, 491, 497, 510, 497, 511, 512, 513, 514, 515, 516, 489, 489, 517, 489, 489, 489, 518, 519, 520, 489, 489, 521, 522, 523, 524, 489, 525, 489, 526, 489, 491, 527, 491, 500, 491, 489, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 529, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 528, 528, 528, 529, 528, 529, 528, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 528, 528, 528, 528, 489, 528, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 528, 528, 528, 528, 528, 489, 492, 530, 492, 492, 492, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 492, 530, 531, 497, 532, 532, 497, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 497, 532, 533, 534, 535, 536, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 83, 83, 537, 83, 537, 83, 83, 537, 537, 83, 83, 83, 539, 83, 83, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 83, 83, 83, 83, 83, 83, 83, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 537, 83, 537, 537, 538, 83, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 537, 537, 537, 83, 537, 538, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 541, 541, 541, 541, 541, 541, 541, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 541, 541, 541, 541, 538, 541, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 541, 541, 541, 541, 541, 538, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 541, 497, 532, 497, 532, 497, 532, 543, 542, 497, 544, 532, 497, 532, 545, 497, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 497, 537, 497, 532, 497, 497, 532, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 529, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 528, 528, 528, 529, 528, 529, 528, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 528, 528, 528, 528, 505, 528, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 528, 528, 528, 528, 528, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 505, 547, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 505, 505, 505, 548, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 505, 505, 505, 505, 505, 549, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 550, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 551, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 529, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 529, 546, 529, 546, 505, 505, 505, 550, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 505, 546, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 546, 546, 546, 546, 546, 505, 545, 537, 493, 537, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 553, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 554, 555, 489, 489, 489, 489, 489, 556, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 557, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 558, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 559, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 560, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 561, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 562, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 563, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 564, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 565, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 566, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 567, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 563, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 568, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 567, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 569, 489, 570, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 571, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 572, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 573, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 574, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 575, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 576, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 577, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 578, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 579, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 580, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 581, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 582, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 572, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 583, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 584, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 529, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 585, 585, 585, 529, 585, 529, 585, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 585, 585, 585, 585, 489, 585, 489, 489, 489, 489, 489, 489, 489, 489, 586, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 585, 585, 585, 585, 585, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 587, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 588, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 589, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 590, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 591, 489, 592, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 593, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 565, 489, 489, 489, 594, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 595, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 596, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 581, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 597, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 520, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 579, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 598, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 599, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 600, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 581, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 601, 489, 489, 489, 602, 489, 489, 489, 489, 489, 603, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 603, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 604, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 605, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 606, 607, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 608, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 581, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 609, 489, 489, 610, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 565, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 576, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 611, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 612, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 594, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 613, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 520, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 614, 489, 489, 489, 489, 489, 489, 489, 489, 489, 608, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 576, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 615, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 616, 489, 489, 489, 489, 489, 489, 489, 617, 489, 489, 489, 489, 489, 489, 489, 618, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 594, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 582, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 602, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 619, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 576, 489, 489, 489, 600, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 620, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 621, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 529, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 529, 552, 529, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 489, 552, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 570, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 552, 552, 552, 552, 552, 489, 497, 532, 623, 624, 624, 624, 623, 624, 624, 624, 624, 625, 624, 625, 625, 625, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 623, 624, 624, 624, 624, 624, 625, 624, 624, 626, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 624, 627, 624, 624, 622, 624, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, 624, 624, 624, 624, 624, 622, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 86, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 87, 628, 628, 628, 628, 86, 628, 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, 628, 628, 628, 628, 85, 628, 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, 628, 628, 628, 628, 628, 85, 625, 629, 625, 625, 625, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, 625, 629, 630, 631, 632, 633, 634, 628, 635, 637, 638, 638, 638, 637, 638, 638, 638, 638, 639, 640, 639, 639, 639, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 637, 638, 638, 638, 638, 638, 639, 641, 638, 642, 638, 643, 644, 638, 638, 638, 645, 646, 638, 646, 638, 643, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 647, 648, 649, 638, 638, 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, 651, 652, 638, 643, 636, 643, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 638, 653, 638, 646, 638, 636, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 655, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 654, 654, 654, 654, 654, 656, 654, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 654, 654, 654, 654, 636, 654, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 654, 654, 654, 654, 654, 636, 658, 657, 659, 657, 639, 660, 639, 639, 639, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 639, 660, 661, 643, 662, 662, 643, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 643, 662, 663, 664, 665, 666, 643, 662, 643, 662, 643, 662, 643, 667, 662, 643, 662, 669, 643, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 668, 643, 668, 643, 662, 643, 643, 662, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 655, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 670, 670, 670, 670, 670, 656, 670, 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, 670, 670, 670, 670, 650, 670, 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, 670, 670, 670, 670, 670, 650, 669, 668, 640, 668, 643, 662, 672, 671, 671, 671, 672, 671, 671, 671, 671, 673, 674, 673, 673, 673, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 672, 671, 671, 671, 671, 671, 673, 671, 671, 675, 671, 94, 676, 671, 677, 671, 678, 94, 125, 679, 127, 94, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 680, 671, 681, 125, 682, 683, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 125, 684, 125, 94, 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, 685, 671, 671, 671, 671, 671, 671, 671, 671, 686, 671, 671, 687, 671, 688, 671, 671, 671, 138, 139, 671, 94, 671, 689, 689, 689, 689, 689, 689, 689, 689, 689, 673, 689, 673, 673, 673, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 673, 689, 689, 689, 689, 120, 121, 689, 122, 689, 123, 124, 125, 126, 127, 120, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 128, 689, 129, 125, 130, 131, 689, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 132, 133, 125, 94, 89, 689, 89, 89, 89, 89, 89, 89, 89, 89, 134, 89, 89, 89, 89, 89, 89, 89, 89, 135, 89, 89, 136, 89, 137, 89, 89, 89, 138, 139, 689, 94, 689, 89, 690, 691, 691, 691, 690, 691, 691, 691, 691, 125, 692, 125, 125, 125, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 690, 691, 691, 691, 691, 691, 125, 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, 125, 691, 125, 692, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 94, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 125, 692, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 693, 125, 692, 125, 125, 125, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 125, 694, 694, 694, 694, 694, 694, 694, 694, 694, 695, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, 125, 694, 125, 692, 125, 125, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 125, 125, 88, 696, 690, 125, 690, 698, 697, 700, 701, 700, 700, 700, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 700, 699, 702, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 90, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 91, 690, 690, 690, 690, 90, 690, 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, 690, 690, 690, 690, 89, 690, 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, 690, 690, 690, 690, 690, 89, 703, 125, 692, 125, 125, 125, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 125, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 125, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 94, 690, 704, 705, 706, 707, 708, 709, 125, 692, 125, 125, 125, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 125, 690, 690, 690, 690, 690, 690, 690, 690, 690, 94, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 125, 690, 125, 697, 94, 710, 94, 710, 711, 712, 711, 711, 711, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 699, 711, 699, 713, 710, 714, 714, 714, 714, 714, 714, 714, 714, 714, 97, 714, 97, 97, 97, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 97, 714, 714, 714, 714, 98, 99, 714, 100, 714, 101, 102, 103, 104, 105, 98, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 106, 714, 107, 103, 108, 109, 714, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 110, 111, 103, 112, 96, 714, 96, 96, 96, 96, 96, 96, 96, 96, 113, 96, 96, 96, 96, 96, 96, 96, 96, 114, 96, 96, 115, 96, 116, 96, 96, 96, 117, 118, 714, 112, 714, 96, 125, 710, 715, 710, 716, 710, 717, 710, 718, 164, 164, 164, 718, 164, 164, 164, 164, 719, 164, 719, 719, 719, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 718, 164, 164, 164, 164, 164, 719, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 720, 164, 164, 166, 164, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 164, 164, 164, 164, 166, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 721, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 163, 163, 163, 163, 721, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 163, 163, 163, 163, 166, 163, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 163, 163, 163, 163, 163, 166, 722, 722, 722, 722, 722, 722, 722, 722, 722, 167, 722, 167, 167, 167, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 167, 722, 722, 722, 722, 722, 722, 722, 168, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 722, 169, 722, 722, 166, 722, 166, 166, 166, 170, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 722, 722, 722, 722, 722, 166, 723, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 721, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 164, 722, 722, 722, 722, 721, 722, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 722, 722, 722, 722, 166, 722, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 724, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 722, 722, 722, 722, 722, 166, 171, 722, 726, 725, 725, 725, 726, 725, 725, 725, 725, 727, 725, 727, 727, 727, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 726, 725, 725, 725, 725, 725, 727, 725, 725, 728, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 729, 725, 725, 725, 725, 725, 725, 725, 730, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, 731, 725, 727, 732, 727, 727, 727, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 732, 727, 732, 733, 734, 735, 736, 738, 737, 739, 740, 737, 741, 743, 744, 744, 744, 743, 744, 744, 744, 744, 745, 746, 745, 745, 745, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 743, 744, 744, 744, 744, 744, 745, 744, 744, 747, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 744, 748, 744, 744, 742, 744, 742, 742, 742, 742, 742, 742, 742, 742, 749, 742, 742, 742, 742, 742, 742, 742, 742, 750, 742, 742, 751, 742, 752, 742, 742, 742, 744, 744, 744, 744, 744, 742, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 753, 753, 753, 753, 753, 753, 753, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 753, 753, 753, 753, 742, 753, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 753, 753, 753, 753, 753, 742, 745, 754, 745, 745, 745, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 745, 754, 755, 756, 757, 758, 759, 761, 760, 762, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 764, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 765, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 766, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 767, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 768, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 764, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 769, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 770, 742, 742, 742, 742, 742, 742, 742, 771, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 772, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 773, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 764, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 774, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 764, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 775, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 776, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 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, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 763, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 742, 763, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 768, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 763, 763, 763, 763, 763, 742, 778, 188, 188, 188, 778, 188, 188, 188, 188, 779, 780, 779, 779, 779, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 778, 188, 188, 188, 188, 188, 779, 781, 188, 782, 188, 783, 784, 188, 785, 188, 786, 787, 188, 788, 789, 790, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 791, 188, 792, 793, 794, 795, 188, 796, 797, 796, 796, 798, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 799, 800, 188, 801, 802, 188, 803, 804, 805, 806, 807, 808, 777, 777, 809, 777, 777, 777, 810, 811, 812, 777, 777, 813, 814, 815, 816, 777, 817, 777, 818, 777, 819, 820, 188, 801, 188, 777, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 177, 177, 235, 177, 236, 177, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 177, 177, 177, 177, 777, 177, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 177, 177, 177, 177, 177, 777, 822, 821, 821, 823, 821, 824, 826, 827, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 828, 825, 830, 829, 831, 832, 833, 822, 821, 779, 834, 779, 779, 779, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 779, 834, 836, 835, 838, 839, 838, 838, 838, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 838, 837, 188, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 188, 840, 841, 842, 843, 844, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 846, 846, 846, 846, 846, 846, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, 846, 848, 186, 186, 186, 848, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 848, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 850, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, 188, 849, 851, 853, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 188, 852, 188, 177, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 849, 849, 849, 188, 849, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 849, 849, 849, 188, 188, 849, 855, 840, 188, 840, 840, 856, 856, 856, 840, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 840, 856, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 858, 859, 840, 860, 191, 861, 859, 840, 840, 862, 863, 840, 863, 840, 191, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 864, 840, 865, 866, 867, 840, 868, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 869, 840, 840, 191, 857, 191, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 840, 870, 840, 863, 840, 857, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 872, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 871, 871, 871, 873, 871, 874, 871, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 871, 871, 871, 871, 857, 871, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, 871, 871, 871, 871, 871, 857, 876, 875, 877, 879, 880, 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, 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, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, 881, 878, 883, 884, 882, 885, 886, 887, 888, 875, 191, 871, 871, 191, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 191, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 871, 871, 871, 871, 871, 871, 871, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 871, 871, 871, 871, 190, 871, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 871, 871, 871, 871, 871, 190, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 871, 191, 871, 191, 871, 191, 871, 191, 889, 871, 191, 871, 191, 871, 191, 191, 871, 191, 871, 890, 891, 840, 892, 188, 840, 801, 188, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 188, 840, 188, 850, 840, 895, 894, 894, 894, 895, 894, 894, 894, 894, 896, 897, 896, 896, 896, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 895, 894, 894, 894, 894, 894, 896, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 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, 894, 899, 894, 894, 898, 894, 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, 894, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 900, 900, 900, 900, 901, 900, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 900, 900, 900, 900, 900, 901, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 902, 902, 902, 902, 902, 902, 902, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 902, 902, 902, 902, 903, 902, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 902, 902, 902, 902, 902, 903, 906, 905, 905, 905, 906, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 906, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 907, 907, 907, 907, 907, 907, 907, 907, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 908, 905, 905, 905, 905, 905, 905, 905, 905, 905, 909, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 910, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 911, 905, 905, 912, 905, 913, 914, 916, 916, 916, 916, 916, 916, 916, 916, 915, 917, 917, 917, 917, 917, 917, 917, 917, 915, 915, 918, 918, 227, 227, 227, 918, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 918, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 919, 227, 920, 921, 922, 922, 227, 227, 227, 922, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 922, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 923, 227, 226, 922, 924, 925, 926, 926, 214, 214, 214, 926, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 926, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 927, 214, 922, 208, 208, 208, 922, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 922, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 928, 208, 918, 214, 214, 214, 918, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 918, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 918, 929, 929, 929, 918, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 918, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 930, 929, 931, 932, 932, 929, 929, 929, 932, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 932, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 933, 929, 932, 208, 208, 208, 932, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 932, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 928, 208, 934, 932, 932, 214, 214, 214, 932, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 932, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 216, 214, 935, 936, 936, 936, 935, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 935, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, 936, 936, 936, 936, 936, 936, 936, 937, 937, 937, 937, 937, 937, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 937, 937, 937, 937, 937, 937, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 938, 936, 935, 939, 939, 939, 935, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 935, 939, 935, 940, 940, 940, 935, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 935, 940, 935, 941, 941, 941, 935, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 935, 941, 935, 935, 939, 939, 939, 935, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 935, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 939, 939, 939, 939, 939, 939, 939, 942, 942, 942, 942, 942, 942, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 942, 942, 942, 942, 942, 942, 939, 935, 940, 940, 940, 935, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 935, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 943, 943, 943, 943, 943, 943, 940, 935, 941, 941, 941, 935, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 935, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 944, 944, 944, 944, 944, 944, 941, 945, 948, 947, 947, 947, 948, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 948, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 947, 947, 947, 947, 947, 947, 947, 949, 949, 949, 949, 949, 949, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 949, 949, 949, 949, 949, 949, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 947, 939, 947, 948, 950, 950, 950, 948, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 948, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 950, 950, 950, 950, 950, 950, 950, 951, 951, 951, 951, 951, 951, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 951, 951, 951, 951, 951, 951, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 952, 950, 948, 953, 953, 953, 948, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 948, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 953, 953, 953, 953, 953, 953, 953, 954, 954, 954, 954, 954, 954, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 954, 954, 954, 954, 954, 954, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 955, 953, 948, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 957, 957, 957, 957, 957, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 958, 948, 957, 957, 957, 948, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 948, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 958, 957, 948, 957, 957, 957, 948, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 948, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 946, 957, 946, 948, 954, 954, 954, 948, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 948, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 941, 954, 946, 941, 941, 941, 946, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 946, 941, 948, 950, 950, 950, 948, 950, 950, 950, 950, 959, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 948, 950, 950, 950, 950, 950, 959, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 950, 950, 950, 950, 950, 950, 950, 960, 960, 960, 960, 960, 960, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 960, 960, 960, 960, 960, 960, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 950, 961, 950, 948, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, 956, 956, 956, 956, 956, 956, 956, 962, 962, 962, 962, 962, 962, 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, 962, 962, 962, 962, 962, 962, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, 956, 956, 956, 956, 956, 956, 956, 963, 963, 963, 963, 963, 963, 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, 963, 963, 963, 963, 963, 963, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 956, 956, 956, 956, 956, 956, 956, 964, 964, 964, 964, 964, 964, 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, 964, 964, 964, 964, 964, 964, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 956, 956, 956, 956, 956, 956, 956, 965, 965, 965, 965, 965, 965, 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, 965, 965, 965, 965, 965, 965, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 966, 966, 966, 966, 966, 966, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 956, 956, 956, 956, 956, 956, 956, 967, 967, 967, 967, 967, 967, 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, 967, 967, 967, 967, 967, 967, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 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, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 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, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 958, 956, 948, 953, 953, 953, 948, 953, 953, 953, 953, 959, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 948, 953, 953, 953, 953, 953, 959, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 953, 953, 953, 953, 953, 953, 953, 969, 969, 969, 969, 969, 969, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 969, 969, 969, 969, 969, 969, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 961, 953, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, 956, 956, 956, 956, 956, 956, 956, 970, 970, 970, 970, 970, 970, 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, 970, 970, 970, 970, 970, 970, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 961, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 971, 971, 971, 971, 971, 971, 971, 971, 971, 971, 956, 956, 956, 956, 956, 956, 956, 971, 971, 971, 971, 971, 971, 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, 971, 971, 971, 971, 971, 971, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 961, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 956, 956, 956, 956, 956, 956, 956, 972, 972, 972, 972, 972, 972, 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, 972, 972, 972, 972, 972, 972, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 961, 956, 948, 956, 956, 956, 948, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 948, 956, 956, 956, 956, 956, 959, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 968, 968, 968, 968, 968, 968, 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, 968, 968, 968, 968, 968, 968, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 961, 956, 973, 974, 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 975, 975, 975, 976, 976, 976, 976, 976, 976, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, 976, 976, 976, 976, 976, 976, 975, 975, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 233, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 177, 177, 235, 177, 236, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 232, 177, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 177, 177, 177, 177, 177, 232, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 233, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 840, 840, 235, 840, 236, 840, 232, 232, 232, 232, 977, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 840, 840, 840, 840, 232, 840, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 840, 840, 840, 840, 840, 232, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 233, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 234, 840, 840, 235, 840, 236, 840, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 978, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 840, 840, 840, 840, 232, 840, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 840, 840, 840, 840, 840, 232, 979, 980, 840, 835, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 982, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 983, 984, 777, 777, 777, 777, 777, 985, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 986, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 987, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 988, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 989, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 990, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 991, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 992, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 993, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 994, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 995, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 996, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 992, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 997, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 996, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 998, 777, 999, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 1000, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 1001, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1002, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1003, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 1004, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 1005, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1006, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 1007, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 1008, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1009, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1010, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 1011, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1001, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1012, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1013, 777, 1014, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1015, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 994, 777, 777, 777, 1012, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1016, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1017, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1010, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 1018, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 812, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1008, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 1019, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1020, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 1021, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1022, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1010, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1023, 777, 777, 777, 1024, 777, 777, 777, 777, 777, 1025, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1025, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1026, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 1027, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1028, 1029, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 1030, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1031, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1032, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1035, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1036, 1033, 1033, 1037, 1033, 1038, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1033, 1033, 1033, 1033, 1034, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1033, 1033, 1033, 1033, 1033, 1034, 826, 1039, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, 828, 825, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1040, 777, 777, 1041, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 994, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1005, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1042, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1043, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1012, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1044, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 812, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 1045, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1046, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1005, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1010, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1047, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 1048, 777, 777, 777, 777, 777, 777, 777, 1049, 777, 777, 777, 777, 777, 777, 777, 1050, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1012, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1051, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1052, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1019, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 1053, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1019, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 1054, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1005, 777, 777, 777, 1055, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 1056, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1019, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 1057, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 1058, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 233, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 234, 981, 981, 235, 981, 236, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 777, 981, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 999, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 981, 981, 981, 981, 981, 777, 1059, 188, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 850, 840, 1061, 1060, 1060, 1060, 1061, 1060, 1060, 1060, 1060, 1062, 1063, 1062, 1062, 1062, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1060, 1060, 1060, 1060, 1060, 1062, 1060, 1060, 1064, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1065, 1060, 1062, 1066, 1062, 1062, 1062, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1062, 1066, 1067, 1068, 1069, 1070, 1071, 1073, 1072, 1074, 1076, 1077, 1077, 1077, 1076, 1077, 1077, 1077, 1077, 1078, 1079, 1078, 1078, 1078, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1076, 1077, 1077, 1077, 1077, 1077, 1078, 1077, 1080, 1081, 1077, 1077, 1077, 1080, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1077, 1082, 1077, 1077, 1075, 1077, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1077, 1077, 1077, 1077, 1077, 1075, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 242, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 243, 1083, 1083, 1083, 1083, 242, 1083, 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, 1083, 1083, 1083, 1083, 241, 1083, 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, 1083, 1083, 1083, 1083, 1083, 241, 1078, 1084, 1078, 1078, 1078, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1078, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1083, 1091, 1093, 1094, 1094, 1094, 1093, 1094, 1094, 1094, 1094, 1095, 1096, 1095, 1095, 1095, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1093, 1094, 1094, 1094, 1094, 1094, 1095, 1097, 1098, 1099, 1100, 1101, 1102, 1098, 1103, 1104, 1105, 1101, 1106, 1107, 1108, 1101, 1109, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1118, 1118, 1120, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1121, 1122, 1123, 1101, 1124, 1098, 1125, 1126, 1127, 1128, 1129, 1130, 1092, 1092, 1131, 1092, 1092, 1092, 1132, 1133, 1134, 1092, 1092, 1135, 1136, 1137, 1138, 1092, 1139, 1092, 1140, 1092, 1141, 1142, 1143, 1101, 1094, 1092, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1144, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 251, 251, 251, 251, 251, 1145, 251, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 251, 251, 251, 251, 1092, 251, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 251, 251, 251, 251, 251, 1092, 1147, 1146, 1148, 1149, 1095, 1150, 1095, 1095, 1095, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1095, 1150, 1151, 1153, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1152, 1154, 1155, 1156, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 246, 246, 1158, 246, 1158, 246, 246, 1158, 1158, 246, 246, 246, 1159, 246, 246, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 246, 246, 246, 246, 246, 246, 246, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1158, 246, 1158, 1158, 254, 246, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1158, 1158, 1158, 246, 1158, 254, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 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, 1161, 1161, 1161, 1161, 254, 1161, 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, 1161, 1161, 1161, 1161, 1161, 254, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1162, 1152, 1101, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1163, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1162, 1152, 1164, 1165, 1101, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1162, 1152, 1162, 1166, 1152, 1168, 1167, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1167, 1106, 1169, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1171, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1172, 1170, 1170, 1170, 1170, 1170, 1171, 1170, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 248, 1170, 1174, 1173, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1176, 1173, 1177, 1178, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1179, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1180, 1173, 1173, 1173, 1173, 1173, 1173, 1181, 1173, 1173, 1176, 1173, 1177, 1178, 1173, 1173, 1173, 1182, 1173, 1173, 1173, 1173, 1173, 1179, 1173, 1173, 1183, 1173, 1173, 1173, 1173, 1173, 1180, 1173, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1186, 1184, 1184, 1184, 1184, 1184, 1185, 1184, 1184, 1184, 1187, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1188, 1184, 1189, 251, 1189, 251, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 251, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 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, 1189, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1190, 1192, 1194, 1193, 1195, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1181, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1182, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1183, 1173, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1197, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1182, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1183, 1173, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1200, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1203, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1204, 1206, 1205, 1207, 1209, 1209, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1210, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1211, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1212, 1208, 1213, 1213, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1214, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1213, 1213, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1203, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 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, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1222, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1223, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1224, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226, 1226, 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, 1227, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1225, 1225, 1228, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1229, 1225, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1231, 1198, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1203, 1198, 1230, 1230, 1230, 1230, 1230, 1230, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1233, 1232, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1235, 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, 1236, 1232, 1232, 1232, 1232, 1232, 1235, 1232, 1232, 1232, 1237, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1238, 1232, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 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, 1240, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1237, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1238, 1232, 1241, 1198, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1243, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1244, 1198, 1198, 1198, 1198, 1198, 1243, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1203, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1201, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1202, 1198, 1163, 1169, 1101, 1245, 1152, 1153, 1152, 1246, 1153, 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, 1153, 1169, 1153, 1152, 1153, 1101, 1152, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 1158, 1158, 1158, 1158, 1158, 1158, 1247, 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, 1158, 1158, 1158, 1158, 254, 1158, 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, 1158, 1158, 1158, 1158, 1158, 254, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1144, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 251, 251, 251, 251, 1145, 251, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 251, 251, 251, 251, 1118, 251, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 251, 251, 251, 251, 251, 1118, 1249, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1118, 1251, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1252, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1253, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1254, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1255, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1144, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1248, 1250, 1250, 1250, 1250, 1145, 1250, 1118, 1118, 1118, 1254, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1118, 1250, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1250, 1250, 1250, 1250, 1250, 1118, 1256, 1258, 1257, 1259, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1261, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1262, 1263, 1092, 1092, 1092, 1092, 1092, 1264, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1265, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1266, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1267, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1268, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1269, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1270, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1271, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1272, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1273, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1274, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1275, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1276, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1277, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1278, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1279, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1275, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1280, 1092, 1281, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1282, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1283, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1284, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1286, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1287, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1288, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1289, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1290, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1291, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1292, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1293, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1294, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1295, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1296, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1297, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1298, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 256, 257, 256, 256, 256, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 256, 1144, 1299, 258, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1299, 1299, 259, 1299, 1299, 1145, 1299, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1299, 260, 1299, 1299, 1092, 1299, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1299, 1299, 1299, 1299, 1299, 1092, 273, 274, 273, 273, 273, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 272, 272, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 278, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 277, 272, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1301, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1302, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1303, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1144, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1304, 1304, 1304, 1304, 1304, 1145, 1304, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1304, 1304, 1304, 1304, 1092, 1304, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1305, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1304, 1304, 1304, 1304, 1304, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1306, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1307, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1308, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1309, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1310, 1092, 1311, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1312, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1313, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1278, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1314, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1315, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1295, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1316, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1134, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1317, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1318, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1278, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1319, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1285, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1320, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1321, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1322, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1295, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1323, 1092, 1092, 1092, 1324, 1092, 1092, 1092, 1092, 1092, 1325, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1326, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1292, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1278, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1327, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1328, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1329, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1330, 1331, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1278, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1332, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1333, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1319, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1334, 1092, 1092, 1335, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1278, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1336, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1292, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1337, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1338, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1339, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1278, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1340, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1341, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1327, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1342, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1343, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1289, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1318, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1344, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1345, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1346, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1347, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1348, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1284, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1349, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1350, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1319, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1351, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1319, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1352, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1289, 1092, 1092, 1092, 1353, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1354, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1319, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1355, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1356, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1357, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1144, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1145, 1260, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1092, 1260, 1092, 1092, 1092, 1327, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1260, 1260, 1260, 1260, 1260, 1092, 1358, 1162, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1101, 1152, 1359, 1361, 1360, 1361, 1361, 1361, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1361, 1360, 1360, 1360, 1360, 1360, 1362, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 284, 1360, 282, 1363, 282, 282, 282, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 282, 1363, 1363, 1363, 1363, 1363, 283, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 284, 1363, 285, 1363, 1365, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1366, 1364, 1365, 1364, 1365, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1368, 1364, 1365, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1369, 1364, 1365, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1370, 1364, 1372, 1370, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 155, 2, 3, 4, 161, 6, 7, 8, 9, 10, 155, 155, 164, 167, 164, 12, 168, 14, 164, 175, 176, 179, 180, 186, 181, 182, 183, 19, 184, 185, 188, 190, 191, 192, 193, 194, 25, 18, 177, 178, 27, 226, 227, 229, 231, 229, 30, 232, 32, 229, 239, 240, 243, 244, 250, 245, 246, 247, 37, 248, 249, 252, 254, 255, 256, 257, 258, 43, 36, 241, 242, 45, 290, 291, 301, 300, 0, 48, 302, 303, 50, 304, 305, 305, 417, 52, 53, 417, 446, 54, 55, 446, 446, 450, 450, 59, 54, 60, 448, 449, 451, 452, 450, 446, 453, 454, 456, 56, 57, 457, 458, 58, 450, 61, 62, 67, 74, 460, 461, 60, 448, 449, 451, 452, 450, 446, 453, 454, 456, 56, 57, 457, 458, 58, 61, 62, 67, 74, 460, 461, 459, 63, 64, 65, 66, 68, 69, 72, 70, 71, 73, 75, 76, 446, 78, 79, 80, 82, 85, 83, 84, 86, 88, 477, 477, 477, 478, 90, 480, 91, 481, 92, 478, 90, 480, 91, 481, 515, 515, 515, 95, 96, 97, 98, 527, 515, 515, 532, 515, 515, 554, 515, 102, 555, 561, 105, 108, 110, 112, 113, 114, 108, 109, 565, 109, 565, 111, 515, 579, 580, 583, 584, 590, 585, 586, 587, 119, 588, 589, 592, 594, 595, 596, 597, 598, 125, 118, 581, 582, 127, 634, 635, 129, 517, 93, 519, 524, 131, 132, 637, 738, 134, 135, 136, 738, 746, 746, 746, 139, 768, 767, 746, 770, 772, 757, 804, 145, 146, 147, 151, 152, 145, 146, 147, 151, 152, 148, 148, 146, 147, 149, 150, 148, 148, 146, 147, 149, 150, 851, 146, 746, 920, 153, 154, 920, 920, 155, 155, 156, 157, 158, 160, 162, 163, 155, 155, 155, 159, 155, 159, 155, 1, 155, 155, 155, 5, 164, 164, 165, 164, 166, 169, 164, 164, 11, 13, 164, 164, 164, 170, 171, 172, 15, 21, 26, 195, 28, 164, 164, 164, 173, 174, 164, 16, 164, 164, 164, 17, 164, 164, 164, 20, 187, 189, 22, 164, 164, 23, 24, 164, 196, 200, 204, 197, 198, 199, 201, 202, 203, 164, 164, 205, 209, 215, 206, 213, 214, 207, 211, 212, 208, 210, 164, 216, 225, 224, 217, 218, 219, 220, 221, 222, 223, 164, 164, 164, 228, 229, 229, 229, 230, 233, 229, 29, 31, 229, 229, 229, 234, 235, 236, 33, 39, 44, 259, 46, 229, 229, 229, 237, 238, 229, 34, 229, 229, 229, 35, 229, 229, 229, 38, 251, 253, 40, 229, 229, 41, 42, 229, 260, 264, 268, 261, 262, 263, 265, 266, 267, 229, 229, 269, 273, 279, 270, 277, 278, 271, 275, 276, 272, 274, 229, 280, 289, 288, 281, 282, 283, 284, 285, 286, 287, 229, 229, 229, 292, 293, 293, 294, 293, 295, 293, 293, 293, 296, 296, 296, 297, 296, 296, 296, 298, 299, 298, 47, 49, 300, 300, 300, 306, 305, 305, 307, 308, 309, 310, 312, 305, 315, 316, 317, 318, 319, 321, 323, 324, 325, 329, 331, 332, 333, 349, 354, 361, 366, 373, 380, 383, 384, 388, 382, 392, 400, 404, 406, 411, 413, 416, 305, 305, 305, 305, 305, 305, 311, 305, 311, 305, 313, 51, 314, 305, 305, 305, 320, 322, 305, 326, 327, 328, 324, 330, 305, 334, 335, 344, 347, 336, 337, 338, 339, 340, 341, 342, 343, 306, 345, 346, 348, 350, 353, 351, 352, 355, 358, 356, 357, 359, 360, 362, 364, 363, 365, 367, 368, 305, 369, 370, 371, 372, 305, 374, 377, 375, 376, 378, 379, 381, 385, 386, 387, 389, 391, 390, 393, 394, 395, 397, 396, 398, 399, 401, 402, 403, 405, 407, 408, 409, 410, 412, 414, 415, 418, 417, 417, 419, 420, 422, 417, 417, 417, 421, 417, 421, 423, 417, 425, 424, 424, 429, 430, 431, 432, 424, 434, 435, 436, 437, 439, 441, 442, 443, 444, 445, 424, 426, 428, 424, 427, 424, 424, 424, 424, 424, 433, 424, 433, 438, 424, 440, 424, 446, 446, 447, 462, 463, 449, 465, 466, 453, 467, 468, 469, 470, 471, 473, 474, 475, 476, 446, 446, 446, 446, 446, 446, 450, 455, 446, 446, 446, 446, 446, 446, 446, 446, 446, 464, 446, 464, 446, 446, 446, 446, 472, 446, 77, 81, 87, 477, 479, 482, 89, 477, 477, 478, 483, 483, 484, 485, 487, 489, 490, 483, 483, 486, 483, 486, 483, 488, 483, 483, 483, 492, 491, 491, 493, 494, 495, 497, 499, 500, 505, 512, 491, 491, 491, 491, 496, 491, 496, 491, 498, 491, 491, 492, 501, 502, 503, 504, 506, 507, 510, 508, 509, 511, 513, 514, 516, 515, 525, 526, 528, 529, 531, 533, 534, 535, 537, 538, 539, 541, 542, 564, 567, 568, 569, 637, 638, 639, 640, 641, 536, 643, 659, 664, 671, 676, 678, 684, 687, 688, 692, 686, 696, 707, 711, 714, 722, 726, 729, 730, 515, 93, 518, 515, 515, 520, 522, 523, 515, 521, 515, 515, 515, 515, 515, 94, 515, 515, 515, 515, 515, 530, 515, 530, 515, 515, 99, 515, 515, 100, 515, 515, 536, 515, 540, 515, 543, 553, 515, 101, 556, 557, 558, 515, 559, 103, 562, 104, 106, 563, 515, 544, 546, 552, 515, 545, 515, 515, 547, 550, 551, 515, 548, 549, 515, 515, 515, 515, 560, 107, 566, 515, 515, 570, 515, 515, 515, 571, 573, 515, 572, 515, 572, 515, 574, 575, 576, 115, 121, 126, 599, 128, 515, 515, 515, 577, 578, 515, 116, 515, 515, 515, 117, 515, 515, 515, 120, 591, 593, 122, 515, 515, 123, 124, 515, 600, 604, 608, 601, 602, 603, 605, 606, 607, 515, 515, 609, 613, 619, 610, 617, 618, 611, 615, 616, 612, 614, 515, 620, 628, 633, 621, 622, 623, 624, 625, 626, 627, 629, 630, 631, 632, 515, 515, 515, 636, 130, 133, 515, 642, 515, 644, 645, 654, 657, 646, 647, 648, 649, 650, 651, 652, 653, 516, 655, 656, 658, 660, 663, 661, 662, 665, 668, 666, 667, 669, 670, 672, 674, 673, 675, 677, 679, 681, 680, 682, 683, 685, 516, 689, 690, 691, 693, 695, 694, 697, 698, 699, 704, 700, 701, 702, 515, 516, 517, 93, 703, 524, 522, 705, 706, 708, 709, 710, 712, 713, 715, 716, 717, 720, 718, 719, 721, 723, 724, 725, 727, 728, 515, 731, 731, 732, 733, 734, 736, 731, 731, 731, 735, 731, 735, 731, 737, 731, 739, 738, 738, 740, 741, 738, 742, 744, 738, 738, 738, 738, 743, 738, 743, 745, 738, 747, 746, 746, 751, 752, 753, 746, 754, 756, 759, 760, 761, 762, 763, 746, 764, 765, 769, 792, 796, 746, 797, 799, 801, 746, 802, 803, 805, 809, 811, 812, 746, 814, 832, 837, 844, 852, 859, 866, 871, 872, 876, 870, 881, 891, 897, 900, 909, 913, 917, 918, 919, 748, 750, 746, 749, 746, 746, 746, 746, 746, 746, 746, 755, 746, 755, 746, 137, 758, 746, 746, 746, 746, 746, 746, 746, 766, 746, 746, 138, 140, 746, 141, 776, 784, 787, 771, 788, 789, 777, 781, 782, 746, 771, 141, 773, 774, 142, 746, 773, 746, 746, 775, 746, 778, 780, 746, 778, 779, 781, 782, 780, 746, 746, 783, 746, 746, 785, 780, 781, 782, 785, 786, 746, 778, 780, 781, 782, 746, 778, 780, 781, 782, 746, 790, 780, 781, 782, 790, 791, 746, 141, 792, 771, 793, 781, 782, 794, 780, 141, 794, 771, 795, 798, 800, 143, 144, 746, 746, 806, 807, 808, 803, 810, 746, 746, 813, 746, 746, 815, 816, 825, 830, 817, 818, 819, 820, 821, 822, 823, 824, 747, 826, 827, 828, 829, 747, 831, 833, 836, 834, 835, 747, 747, 838, 841, 839, 840, 842, 843, 747, 845, 847, 846, 848, 849, 850, 746, 746, 853, 747, 854, 746, 855, 856, 857, 858, 750, 860, 863, 861, 862, 864, 865, 867, 868, 869, 747, 873, 874, 875, 877, 879, 880, 878, 747, 882, 883, 884, 887, 885, 886, 888, 889, 890, 892, 894, 893, 895, 896, 898, 899, 901, 902, 904, 907, 903, 905, 906, 908, 910, 911, 912, 914, 915, 916, 746, 746, 920, 921, 922, 920, 924, 923, 925, 923, 926, 927, 928, 923, 923 ] class << self attr_accessor :_lex_trans_actions private :_lex_trans_actions, :_lex_trans_actions= end self._lex_trans_actions = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 11, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 13, 14, 15, 0, 0, 16, 17, 0, 0, 18, 19, 20, 21, 22, 23, 23, 24, 25, 23, 26, 25, 27, 25, 23, 23, 24, 23, 28, 23, 23, 29, 23, 23, 23, 23, 23, 23, 0, 30, 31, 0, 32, 31, 33, 31, 0, 0, 30, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 39, 22, 40, 23, 23, 23, 40, 41, 42, 43, 0, 0, 0, 0, 0, 44, 45, 0, 46, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 50, 0, 22, 0, 51, 0, 7, 0, 8, 0, 7, 0, 0, 0, 0, 8, 7, 0, 8, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 52, 0, 0, 52, 53, 0, 0, 0, 54, 55, 56, 57, 0, 7, 7, 58, 59, 59, 0, 0, 0, 22, 0, 0, 0, 23, 60, 23, 23, 23, 61, 62, 63, 62, 62, 62, 0, 64, 65, 64, 64, 64, 66, 67, 68, 69, 0, 70, 71, 72, 75, 76, 0, 22, 0, 7, 0, 7, 77, 78, 79, 61, 80, 0, 81, 0, 82, 83, 84, 0, 85, 86, 0, 87, 7, 7, 88, 89, 0, 0, 90, 91, 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 96, 0, 0, 97, 0, 98, 99, 100, 0, 101, 102, 103, 0, 7, 0, 0, 104, 105, 0, 22, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 111, 112, 0, 113, 114, 115, 7, 7, 116, 0, 0, 117, 118, 119, 93, 93, 93, 93, 93, 93, 93, 93, 120, 121, 122, 0, 0, 123, 0, 124, 125, 126, 0, 127, 128, 129, 0, 7, 0, 0, 130, 131, 0, 22, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 137, 138, 0, 139, 140, 0, 141, 0, 142, 143, 144, 145, 146, 147, 0, 148, 149, 150, 151, 0, 152, 0, 0, 153, 154, 155, 156, 157, 158, 0, 22, 0, 0, 7, 159, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 164, 165, 166, 61, 167, 0, 168, 0, 0, 0, 169, 170, 171, 0, 0, 172, 0, 0, 0, 173, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 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, 177, 178, 0, 0, 0, 179, 180, 181, 61, 182, 0, 22, 183, 0, 184, 185, 0, 22, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 188, 0, 189, 190, 191, 192, 193, 61, 194, 0, 0, 195, 0, 196, 197, 198, 199, 22, 0, 21, 0, 0, 21, 0, 0, 0, 0, 0, 0, 7, 7, 7, 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, 215, 61, 216, 0, 217, 218, 219, 220, 221, 222, 0, 0, 0, 223, 7, 7, 0, 224, 225, 226, 227, 228, 0, 0, 0, 0, 0, 229, 230, 61, 231, 0, 232, 22, 233, 234, 235, 236, 237, 238, 0, 22, 0, 0, 0, 0, 0, 0, 239, 240, 241, 242, 61, 243, 0, 244, 22, 245, 246, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 249, 0, 8, 0, 0, 7, 250, 0, 0, 0, 0, 0, 0, 7, 7, 0, 251, 0, 251, 251, 251, 0, 0, 251, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 0, 251, 252, 253, 0, 254, 255, 0, 52, 0, 256, 0, 257, 258, 259, 260, 261, 23, 262, 263, 264, 265, 266, 61, 267, 0, 268, 269, 0, 270, 271, 0, 272, 273, 250, 274, 0, 275, 0, 0, 276, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, 279, 0, 280, 281, 0, 0, 0, 282, 0, 0, 283, 284, 285, 286, 0, 0, 0, 287, 288, 0, 289, 290, 291, 0, 7, 292, 293, 294, 0, 295, 93, 93, 93, 93, 93, 93, 93, 93, 296, 297, 298, 0, 0, 299, 0, 300, 301, 302, 0, 303, 304, 305, 0, 7, 0, 0, 306, 307, 0, 22, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 313, 314, 0, 0, 0, 315, 22, 316, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 52, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 317, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 318, 319, 320, 321, 322, 322, 321, 318, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 323, 324, 325, 0, 22, 0, 0, 326, 327, 328, 61, 329, 0, 330, 22, 331, 7, 332, 333, 0, 22, 334, 0, 0, 335, 336, 337, 338, 61, 339, 0, 22, 340, 341, 342, 343, 0, 22, 0, 344, 0, 7, 0, 0, 0, 0, 0, 345, 0, 0, 346, 346, 0, 347, 0, 0, 0, 348, 7, 349, 349, 349, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 352, 0, 353, 354, 355, 356, 357, 358, 359, 61, 360, 0, 361, 0, 0, 362, 363, 364, 365, 366, 367, 368, 0, 369, 370, 0, 0, 371, 372, 373, 0, 0, 374, 0, 0, 373, 375, 375, 376, 377, 0, 378, 378, 0, 379, 380, 381, 382, 0, 383, 373, 373, 384, 0, 0, 385, 385, 0, 386, 387, 0, 388, 389, 390, 390, 391, 391, 0, 0, 392, 393, 393, 394, 394, 395, 396, 396, 397, 397, 398, 399, 399, 400, 400, 0, 0, 401, 402, 403, 404, 405, 406, 406, 403, 405, 407, 346, 408, 0, 0, 0, 0, 0, 409, 410, 349, 349, 349, 411, 349, 412, 413, 22, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, 417, 418, 0, 0, 0, 0, 0, 0, 419, 0, 0, 0, 0, 0, 418, 420, 421, 0, 422, 0, 423, 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, 7, 70, 429, 0, 430, 0, 431, 0, 0, 0, 432, 433 ] class << self attr_accessor :_lex_to_state_actions private :_lex_to_state_actions, :_lex_to_state_actions= end self._lex_to_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 73, 0, 73, 0, 73, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 73, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_from_state_actions private :_lex_from_state_actions, :_lex_from_state_actions= end self._lex_from_state_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 74, 0, 74, 0, 74, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 74, 0, 0, 0, 0, 0 ] class << self attr_accessor :_lex_eof_trans private :_lex_eof_trans, :_lex_eof_trans= end self._lex_eof_trans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 44, 44, 44, 44, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 83, 85, 85, 89, 89, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 164, 166, 166, 166, 178, 180, 180, 180, 180, 180, 186, 178, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 178, 190, 190, 190, 190, 241, 241, 241, 246, 248, 248, 248, 252, 252, 246, 252, 252, 252, 252, 252, 252, 252, 252, 252, 282, 282, 0, 295, 296, 297, 299, 301, 303, 301, 301, 0, 313, 314, 318, 318, 319, 328, 329, 330, 330, 330, 333, 333, 335, 336, 337, 337, 337, 339, 340, 341, 341, 337, 333, 333, 346, 347, 347, 347, 347, 347, 350, 350, 350, 350, 350, 350, 350, 350, 360, 361, 361, 361, 361, 373, 373, 373, 361, 361, 361, 361, 373, 373, 373, 373, 373, 373, 373, 373, 373, 384, 373, 385, 386, 386, 0, 393, 397, 397, 398, 407, 408, 409, 409, 409, 412, 412, 414, 415, 416, 416, 416, 418, 419, 420, 420, 416, 412, 412, 425, 426, 426, 426, 426, 426, 429, 429, 429, 429, 429, 429, 429, 429, 439, 440, 440, 440, 440, 452, 452, 452, 440, 440, 440, 440, 452, 452, 452, 452, 452, 452, 452, 452, 452, 463, 452, 464, 465, 465, 0, 472, 473, 0, 479, 0, 484, 0, 487, 487, 488, 489, 0, 529, 531, 532, 533, 534, 536, 538, 542, 542, 533, 533, 533, 543, 533, 533, 538, 533, 533, 529, 547, 547, 547, 547, 547, 547, 538, 538, 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, 586, 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, 533, 0, 629, 630, 631, 633, 629, 636, 0, 655, 658, 660, 658, 661, 662, 663, 664, 666, 663, 663, 663, 663, 663, 669, 663, 663, 671, 669, 669, 663, 0, 690, 691, 89, 89, 694, 695, 89, 691, 691, 698, 700, 703, 691, 704, 691, 705, 706, 708, 710, 691, 698, 711, 711, 700, 711, 715, 711, 711, 711, 711, 0, 164, 723, 724, 723, 723, 0, 733, 734, 736, 738, 740, 738, 742, 0, 754, 755, 756, 757, 759, 761, 763, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 0, 178, 822, 825, 826, 830, 832, 833, 834, 822, 835, 836, 838, 841, 842, 844, 846, 849, 850, 852, 853, 178, 850, 850, 841, 841, 841, 841, 872, 876, 878, 879, 883, 886, 887, 888, 889, 876, 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, 841, 893, 841, 841, 841, 894, 901, 901, 903, 905, 914, 915, 916, 916, 916, 919, 919, 921, 922, 923, 923, 923, 925, 926, 927, 927, 923, 919, 919, 932, 933, 933, 933, 933, 933, 936, 936, 936, 936, 936, 936, 936, 936, 946, 947, 947, 947, 947, 959, 959, 959, 947, 947, 947, 947, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 974, 975, 976, 976, 178, 841, 841, 980, 841, 836, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1034, 826, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1060, 841, 0, 1067, 1068, 1069, 1071, 1073, 1075, 0, 1084, 1085, 1086, 1087, 1089, 1084, 1092, 0, 252, 1147, 1149, 1150, 1151, 1152, 1153, 1155, 1157, 1159, 1162, 1162, 1153, 1153, 1165, 1166, 1153, 1153, 1168, 1170, 1171, 1171, 1174, 1185, 252, 1191, 1193, 1194, 1196, 1174, 1174, 1199, 1199, 1199, 1205, 1206, 1208, 1209, 1199, 1199, 1216, 1221, 1226, 1199, 1199, 1233, 1233, 1199, 1199, 1170, 1153, 1153, 1170, 1153, 1153, 1159, 252, 1250, 1251, 1251, 1251, 1251, 1251, 1251, 1257, 1159, 1260, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1300, 1301, 1261, 1261, 1305, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1359, 1153, 1360, 0, 1364, 1364, 0, 1368, 1368, 1368, 1368, 1372 ] class << self attr_accessor :lex_start end self.lex_start = 155; class << self attr_accessor :lex_error end self.lex_error = 0; class << self attr_accessor :lex_en_interp_words end self.lex_en_interp_words = 164; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 229; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 293; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 296; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 298; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 300; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 305; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 417; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 424; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 446; class << self attr_accessor :lex_en_expr_cmdarg end self.lex_en_expr_cmdarg = 477; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 483; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 491; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 515; class << self attr_accessor :lex_en_expr_labelarg end self.lex_en_expr_labelarg = 731; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 738; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 746; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 920; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 923; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 155; # line 82 "lib/parser/lexer.rl" # % ESCAPES = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" } BLANK_STRING = ''.freeze ESCAPED_NEXT_LINE = "\\\n".freeze REGEXP_META_CHARACTERS = Regexp.union(*"\\$()*+.<>?[]^{|}".chars).freeze UNDERSCORE_STRING = '_'.freeze RBRACE_OR_RPAREN = %w"} ]".freeze attr_reader :source_buffer attr_reader :encoding attr_accessor :diagnostics attr_accessor :static_env attr_accessor :force_utf32 attr_accessor :cond, :cmdarg, :in_kwarg attr_accessor :tokens, :comments def initialize(version) @version = version @static_env = nil @tokens = nil @comments = nil @has_encode = ''.respond_to?(:encode) reset end def reset(reset_state=true) # Ragel state: if reset_state # Unit tests set state prior to resetting lexer. @cs = self.class.lex_en_line_begin @cond = StackState.new('cond') @cmdarg = StackState.new('cmdarg') @cond_stack = [] @cmdarg_stack = [] end @force_utf32 = false # Set to true by some tests @source = nil # source string @source_pts = nil # @source as a codepoint array @encoding = nil # target encoding for output strings @need_encode = nil @p = 0 # stream position (saved manually in #advance) @ts = nil # token start @te = nil # token end @act = 0 # next action @stack = [] # state stack @top = 0 # state stack top pointer # Lexer state: @token_queue = [] @literal_stack = [] @eq_begin_s = nil # location of last encountered =begin @sharp_s = nil # location of last encountered # @newline_s = nil # location of last encountered newline @num_base = nil # last numeric base @num_digits_s = nil # starting position of numeric digits @num_suffix_s = nil # starting position of numeric suffix @num_xfrm = nil # numeric suffix-induced transformation @escape_s = nil # starting position of current sequence @escape = nil # last escaped sequence, as string @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 @need_encode = false if @has_encode @encoding = @source.encoding end if @has_encode && @source.encoding == Encoding::UTF_8 @source_pts = @source.unpack('U*') else @source_pts = @source.unpack('C*') end if @has_encode && (@source_pts.size > 1_000_000 || @force_utf32) && @encoding != Encoding::UTF_32LE # A heuristic: if the buffer is larger than 1M, then # store it in UTF-32 and convert the tokens as they're # going out. If it's smaller, the conversion overhead # dominates runtime and this stops being beneficial. # # This is not really a good heuristic, as the result # heavily depends on token/character ratio. If it's low, # say the gem consists mostly of long identifiers and # symbols, then storing the source in UTF-8 would be faster. # # Patches accepted. @source = @source.encode(Encoding::UTF_32LE) @need_encode = true end if @source_pts[0] == 0xfeff # Skip byte order mark. @p = 1 end else @source = nil @source_pts = nil end end LEX_STATES = { :line_begin => lex_en_line_begin, :expr_dot => lex_en_expr_dot, :expr_fname => lex_en_expr_fname, :expr_value => lex_en_expr_value, :expr_beg => lex_en_expr_beg, :expr_mid => lex_en_expr_mid, :expr_arg => lex_en_expr_arg, :expr_cmdarg => lex_en_expr_cmdarg, :expr_end => lex_en_expr_end, :expr_endarg => lex_en_expr_endarg, :expr_endfn => lex_en_expr_endfn, :expr_labelarg => lex_en_expr_labelarg, :interp_string => lex_en_interp_string, :interp_words => lex_en_interp_words, :plain_string => lex_en_plain_string, :plain_words => lex_en_plain_string, } def state LEX_STATES.invert.fetch(@cs, @cs) end def state=(state) @cs = LEX_STATES.fetch(state) end def push_cmdarg @cmdarg_stack.push(@cmdarg) @cmdarg = StackState.new("cmdarg.#{@cmdarg_stack.count}") end def pop_cmdarg @cmdarg = @cmdarg_stack.pop end def push_cond @cond_stack.push(@cond) @cond = StackState.new("cond.#{@cond_stack.count}") end def pop_cond @cond = @cond_stack.pop end 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 10693 "lib/parser/lexer.rb" begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if @cs == 0 _goto_level = _out next end end if _goto_level <= _resume case _lex_from_state_actions[ @cs] when 74 then # line 1 "NONE" begin @ts = p end # line 10721 "lib/parser/lexer.rb" end _keys = @cs << 1 _inds = _lex_index_offsets[ @cs] _slen = _lex_key_spans[ @cs] _trans = if ( _slen > 0 && _lex_trans_keys[_keys] <= ( (@source_pts[p] || 0)) && ( (@source_pts[p] || 0)) <= _lex_trans_keys[_keys + 1] ) then _lex_indicies[ _inds + ( (@source_pts[p] || 0)) - _lex_trans_keys[_keys] ] else _lex_indicies[ _inds + _slen ] end end if _goto_level <= _eof_trans @cs = _lex_trans_targs[_trans] if _lex_trans_actions[_trans] != 0 case _lex_trans_actions[_trans] when 22 then # line 515 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 93 then # line 807 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 23 then # line 847 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end when 61 then # line 1157 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 64 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 253 then # line 1201 "lib/parser/lexer.rl" begin tm = p end when 30 then # line 1459 "lib/parser/lexer.rl" begin tm = p end when 32 then # line 1475 "lib/parser/lexer.rl" begin tm = p end when 34 then # line 1503 "lib/parser/lexer.rl" begin tm = p end when 49 then # line 1689 "lib/parser/lexer.rl" begin heredoc_e = p end when 293 then # line 1746 "lib/parser/lexer.rl" begin @escape = nil end when 322 then # line 1818 "lib/parser/lexer.rl" begin tm = p end when 399 then # line 2036 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 393 then # line 2037 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 396 then # line 2038 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 390 then # line 2039 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 405 then # line 2040 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 373 then # line 2041 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 385 then # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 380 then # line 2099 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 378 then # line 2100 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 70 then # line 2235 "lib/parser/lexer.rl" begin tm = p end when 7 then # line 1 "NONE" begin @te = p+1 end when 90 then # line 1068 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{') if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 738 _goto_level = _again next end end end when 5 then # line 1013 "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 = 300 _goto_level = _again next end end end when 86 then # line 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 91 then # line 1013 "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 = 300 _goto_level = _again next end end end when 88 then # line 1000 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 89 then # line 856 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 882 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 4 then # line 856 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 117 then # line 1068 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal current_literal.flush_string current_literal.extend_content emit(:tSTRING_DBEG, '#{') if current_literal.heredoc? current_literal.saved_herebody_s = @herebody_s @herebody_s = nil end current_literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 738 _goto_level = _again next end end end when 10 then # line 1013 "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 = 300 _goto_level = _again next end end end when 114 then # line 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 118 then # line 1013 "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 = 300 _goto_level = _again next end end end when 116 then # line 856 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 882 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 9 then # line 856 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 140 then # line 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 142 then # line 1000 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin literal.extend_space @ts, @te end end when 143 then # line 856 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (<= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; else @cs = (pop_literal); end begin p += 1 _goto_level = _out next end else current_literal.extend_string(string, @ts, @te) end end end when 148 then # line 856 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin string = tok string = string.encode(@encoding) if @need_encode # tLABEL_END is only possible in non-cond context on >= 2.2 if @version >= 22 && !@cond.active? lookahead = @source[@te...@te+2] lookahead = lookahead.encode(@encoding) if @need_encode end current_literal = literal if !current_literal.heredoc? && (token = current_literal.nest_and_try_closing(string, @ts, @te, lookahead)) if token[0] == :tLABEL_END p += 1 pop_literal @cs = 731; 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 151 then # line 1132 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tREGEXP_OPT, tok(@ts, @te - 1), @ts, @te - 1) p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 152 then # line 1120 "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 = 746; begin p += 1 _goto_level = _out next end end end when 12 then # line 1260 "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 153 then # line 1260 "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 155 then # line 1273 "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 154 then # line 1283 "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 176 then # line 1304 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(KEYWORDS_BEGIN); @cs = 417; begin p += 1 _goto_level = _out next end end end when 162 then # line 1312 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 417; begin p += 1 _goto_level = _out next end end end when 14 then # line 1316 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 @cs = 746; begin @stack[ @top] = @cs @top+= 1 @cs = 300 _goto_level = _again next end end end when 159 then # line 1325 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 417; begin p += 1 _goto_level = _out next end end end when 171 then # line 1329 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 158 then # line 1337 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 157 then # line 541 "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 175 then # line 1304 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS_BEGIN); @cs = 417; begin p += 1 _goto_level = _out next end end end when 172 then # line 1308 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 417; begin p += 1 _goto_level = _out next end end end when 174 then # line 1312 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 417; begin p += 1 _goto_level = _out next end end end when 169 then # line 1316 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 @cs = 746; begin @stack[ @top] = @cs @top+= 1 @cs = 300 _goto_level = _again next end end end when 165 then # line 1325 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 417; begin p += 1 _goto_level = _out next end end end when 170 then # line 1332 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 163 then # line 1334 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 168 then # line 1337 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 13 then # line 1337 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 161 then # line 1 "NONE" begin case @act when 25 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN); @cs = 417; begin p += 1 _goto_level = _out next end end when 26 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 417; begin p += 1 _goto_level = _out next end end when 27 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 417; begin p += 1 _goto_level = _out next end end end end when 16 then # line 1349 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 1)) @cs = 731; begin p += 1 _goto_level = _out next end end end when 178 then # line 1355 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 177 then # line 541 "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 180 then # line 1352 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 179 then # line 1355 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 15 then # line 1355 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 186 then # line 1381 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 446; begin p += 1 _goto_level = _out next end end end when 185 then # line 1387 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 184 then # line 541 "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 196 then # line 1366 "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 187 then # line 1370 "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 192 then # line 1381 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 446; begin p += 1 _goto_level = _out next end end end when 190 then # line 1384 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 195 then # line 1387 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 219 then # line 1445 "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 = 746 _goto_level = _again next end end end when 202 then # line 1463 "lib/parser/lexer.rl" begin @te = p+1 begin if tok(tm, tm + 1) == '/' # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 515 _goto_level = _again next end end end when 208 then # line 1487 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 18 then # line 1495 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 515 _goto_level = _again next end end end when 210 then # line 1504 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 746 _goto_level = _again next end end end when 33 then # line 1513 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 197 then # line 1527 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 198 then # line 541 "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 1454 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 205 then # line 1476 "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 = 515 _goto_level = _again next end end end when 207 then # line 1492 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 201 then # line 1513 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 200 then # line 1518 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 218 then # line 1527 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 19 then # line 1518 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 35 then # line 1527 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 17 then # line 1 "NONE" begin case @act when 52 then begin begin p = (( @te))-1; end if tok(tm, tm + 1) == '/' # Ambiguous regexp literal. diagnostic :warning, :ambiguous_literal, nil, range(tm, tm + 1) end p = tm - 1 begin @cs = 515 _goto_level = _again next end end when 53 then begin begin p = (( @te))-1; end diagnostic :warning, :ambiguous_prefix, { :prefix => tok(tm, @te) }, range(tm, @te) p = tm - 1 begin @cs = 515 _goto_level = _again next end end when 58 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 746 _goto_level = _again next end end else begin begin p = (( @te))-1; end end end end when 37 then # line 1563 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 446 _goto_level = _again next end end end when 223 then # line 541 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 224 then # line 1563 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 446 _goto_level = _again next end end end when 38 then # line 1563 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1 begin @cs = 446 _goto_level = _again next end end end when 36 then # line 1 "NONE" begin case @act when 65 then begin begin p = (( @te))-1; end if @cond.active? emit(:kDO_COND, 'do', @te - 2, @te) else emit(:kDO, 'do', @te - 2, @te) end @cs = 738; begin p += 1 _goto_level = _out next end end when 66 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 446 _goto_level = _again next end end end end when 234 then # line 1590 "lib/parser/lexer.rl" begin @te = p+1 begin emit_do(true) @cs = 738; begin p += 1 _goto_level = _out next end end end when 227 then # line 1596 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 228 then # line 541 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 229 then # line 1593 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 232 then # line 1596 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 238 then # line 1620 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 237 then # line 541 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 246 then # line 1612 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 515 _goto_level = _again next end end end when 240 then # line 1614 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 244 then # line 1620 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 239 then # line 1 "NONE" begin case @act when 73 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 515; begin p += 1 _goto_level = _out next end end when 74 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 515 _goto_level = _again next end end end end when 274 then # line 1637 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-' emit(:tUMINUS_NUM, '-', @ts, @ts + 1) @cs = 746; begin p += 1 _goto_level = _out next end end end end when 275 then # line 1657 "lib/parser/lexer.rl" begin @te = p+1 begin type = delimiter = @source[@ts].chr p = p - 1; begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 269 then # line 1664 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = @source[@ts].chr, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 45 then # line 1671 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0..-2], @source[@te - 1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 276 then # line 1720 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, @source[@te - 1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 48 then # line 1734 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 746; begin p += 1 _goto_level = _out next end end end when 290 then # line 1764 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[@source[@ts + 1]] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 289 then # line 1774 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 277 then # line 1813 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 42 then # line 1833 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if version?(18) ident = tok(@ts, @te - 2) emit((@source[@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 = 746; else @cs = (arg_or_cmdarg); end else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) @cs = 731; end begin p += 1 _goto_level = _out next end end end when 263 then # line 1879 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 46 then # line 1892 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 746 _goto_level = _again next end end end when 249 then # line 541 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 273 then # line 1647 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR) begin p += 1 _goto_level = _out next end end end when 270 then # line 1671 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin type, delimiter = tok[0..-2], @source[@te - 1].chr begin @cs = (push_literal(type, delimiter, @ts)) _goto_level = _again next end end end when 268 then # line 1677 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 278 then # line 1734 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 746; begin p += 1 _goto_level = _out next end end end when 288 then # line 1774 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :incomplete_escape, nil, range(@ts, @ts + 1) end end when 294 then # line 1780 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 271 then # line 1813 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end end when 316 then # line 1245 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end end when 260 then # line 1876 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 262 then # line 1879 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 265 then # line 1892 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 746 _goto_level = _again next end end end when 44 then # line 1677 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :string_eof, nil, range(@ts, @ts + 1) end end when 51 then # line 1748 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 43 then # line 1876 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 47 then # line 1892 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 746 _goto_level = _again next end end end when 41 then # line 1 "NONE" begin case @act when 96 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit(:kRESCUE, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 491; begin p += 1 _goto_level = _out next end end when 98 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 738; begin p += 1 _goto_level = _out next end end when 100 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 746 _goto_level = _again next end end when 101 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 104 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 746 _goto_level = _again next end end end end when 324 then # line 1912 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 325 then # line 541 "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 326 then # line 1900 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 330 then # line 1912 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 54 then # line 1922 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 334 then # line 1927 "lib/parser/lexer.rl" begin @te = p+1 begin begin @cs = (push_literal(tok, tok, @ts)) _goto_level = _again next end end end when 333 then # line 1937 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 332 then # line 541 "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 336 then # line 1931 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 335 then # line 1937 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 53 then # line 1937 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 515 _goto_level = _again next end end end when 367 then # line 1948 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLAMBDA, tok(@ts, @ts + 2), @ts, @ts + 2) @lambda_stack.push @paren_nest @cs = 417; begin p += 1 _goto_level = _out next end end end when 68 then # line 1985 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 738; begin p += 1 _goto_level = _out next end end end when 344 then # line 2120 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, @source[@te - 1].chr begin @cs = (push_literal(type, delimiter, @ts, nil, false, false, true)) _goto_level = _again next end end end when 56 then # line 2138 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 300 _goto_level = _again next end end end when 364 then # line 2145 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 424; begin p += 1 _goto_level = _out next end end end when 358 then # line 2172 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 515; begin p += 1 _goto_level = _out next end end end when 350 then # line 2176 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 483; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 363 then # line 2190 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 515; begin p += 1 _goto_level = _out next end end end when 348 then # line 2194 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tEH) @cs = 738; begin p += 1 _goto_level = _out next end end end when 345 then # line 2202 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 515; begin p += 1 _goto_level = _out next end end end when 347 then # line 2215 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSEMI) @cs = 738; begin p += 1 _goto_level = _out next end end end when 413 then # line 2218 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, :bare_backslash, nil, range(@ts, @ts + 1) p = p - 1; end end when 343 then # line 2224 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 342 then # line 541 "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 423 then # line 1981 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 305; begin p += 1 _goto_level = _out next end end end when 421 then # line 1985 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 738; begin p += 1 _goto_level = _out next end end end when 420 then # line 1996 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 738; begin p += 1 _goto_level = _out next end end end when 370 then # line 2070 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, :no_dot_digit_literal end end when 410 then # line 2130 "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 362 then # line 2138 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 300 _goto_level = _again next end end end when 368 then # line 2145 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 424; begin p += 1 _goto_level = _out next end end end when 415 then # line 1245 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; 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 357 then # line 2172 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 515; begin p += 1 _goto_level = _out next end end end when 369 then # line 2202 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 515; begin p += 1 _goto_level = _out next end end end when 355 then # line 2209 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 361 then # line 2224 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 57 then # line 2070 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :error, :no_dot_digit_literal end end when 55 then # line 2224 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin diagnostic :fatal, :unexpected, { :character => tok.inspect[1..-2] } end end when 58 then # line 1 "NONE" begin case @act when 117 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit(:tLCURLY) else # 'do' emit_do end end @cs = 738; begin p += 1 _goto_level = _out next end end when 118 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 305; begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 738; begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 515; begin p += 1 _goto_level = _out next end end when 121 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 738; begin p += 1 _goto_level = _out next end end when 122 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 491; begin p += 1 _goto_level = _out next end end when 123 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 515; begin p += 1 _goto_level = _out next end else @cs = 446; begin p += 1 _goto_level = _out next end end end when 124 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__) end begin p += 1 _goto_level = _out next end end when 125 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i) p = p - 1; begin p += 1 _goto_level = _out next end end end when 129 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f) p = p - 1; begin p += 1 _goto_level = _out next end end end when 130 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 132 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 136 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 137 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 = 446; begin p += 1 _goto_level = _out next end end end end when 72 then # line 2236 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 746 _goto_level = _again next end end end when 428 then # line 2239 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 429 then # line 2239 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 69 then # line 2239 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) p = p - 1; @cs = 155; begin p += 1 _goto_level = _out next end end end when 432 then # line 2249 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = 155 _goto_level = _again next end end end when 431 then # line 2257 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :fatal, :embedded_document, nil, range(@eq_begin_s, @eq_begin_s + '=begin'.length) end end when 83 then # line 2267 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 923 _goto_level = _again next end end end when 2 then # line 2271 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 75 then # line 2274 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 738 _goto_level = _again next end end end when 76 then # line 541 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_heredoc_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _goto_level = _out next end end end when 77 then # line 2264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 82 then # line 2267 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 923 _goto_level = _again next end end end when 81 then # line 2274 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 738 _goto_level = _again next end end end when 1 then # line 2274 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 738 _goto_level = _again next end end end when 67 then # line 515 "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 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 87 then # line 515 "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 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[@source[@ts + 1]] diagnostic :warning, :invalid_escape_use, { :escape => escape }, range p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 264 then # line 515 "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 1879 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 155 _goto_level = _again next end end end when 433 then # line 515 "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 2249 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = 155 _goto_level = _again next end end end when 430 then # line 515 "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 2254 "lib/parser/lexer.rl" begin @te = p+1 end when 84 then # line 515 "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 2267 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 923 _goto_level = _again next end end end when 3 then # line 515 "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 2271 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 3 end end when 387 then # line 649 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 386 then # line 650 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, chars)) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 388 then # line 651 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 381 then # line 655 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Float(chars))) } end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 382 then # line 659 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tRATIONAL, Rational(chars)) } end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 383 then # line 660 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tIMAGINARY, Complex(0, Rational(chars))) } end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 110 then # line 675 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 136 then # line 675 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 312 then # line 675 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, :unicode_point_too_large, nil, range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 94 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 120 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 296 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 97 then # line 703 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 123 then # line 703 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 299 then # line 703 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_escape end end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 99 then # line 724 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 125 then # line 724 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 301 then # line 724 "lib/parser/lexer.rl" begin @escape = "\x7f" end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 96 then # line 731 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 122 then # line 731 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 298 then # line 731 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s, p).to_i(8) % 0x100) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 112 then # line 735 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 138 then # line 735 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 314 then # line 735 "lib/parser/lexer.rl" begin @escape = encode_escape(tok(@escape_s + 1, p).to_i(16)) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 107 then # line 738 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 133 then # line 738 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 309 then # line 738 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 111 then # line 743 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 137 then # line 743 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 313 then # line 743 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_hex_escape, nil, range(@escape_s - 1, p + 2) end end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 106 then # line 758 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 132 then # line 758 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 308 then # line 758 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :invalid_unicode_escape, nil, range(@escape_s - 1, p) end end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 109 then # line 772 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 135 then # line 772 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 311 then # line 772 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, :unterminated_unicode, nil, range(p - 1, p) end end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 95 then # line 801 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 121 then # line 801 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 297 then # line 801 "lib/parser/lexer.rl" begin diagnostic :fatal, :escape_eof, nil, range(p - 1, p) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 144 then # line 807 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 882 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 149 then # line 807 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end # line 882 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 60 then # line 847 "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 515 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 24 then # line 847 "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 1459 "lib/parser/lexer.rl" begin tm = p end when 26 then # line 847 "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 tm = p end when 28 then # line 847 "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 1503 "lib/parser/lexer.rl" begin tm = p end when 164 then # line 847 "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 1334 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 183 then # line 847 "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 1352 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 191 then # line 847 "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 1384 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 27 then # line 847 "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 1513 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 222 then # line 847 "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 1518 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 214 then # line 847 "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 1524 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 233 then # line 847 "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 1593 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 245 then # line 847 "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 1614 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 241 then # line 847 "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 1617 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 746 _goto_level = _again next end end end when 261 then # line 847 "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 1876 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 331 then # line 847 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s @herebody_s = nil end end # line 1900 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 327 then # line 847 "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 1903 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @in_kwarg p = p - 1; begin @cs = 746 _goto_level = _again next end else begin @cs = 155 _goto_level = _again next end end end end when 340 then # line 847 "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 1931 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 337 then # line 847 "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 1934 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 155 _goto_level = _again next end end end when 414 then # line 847 "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 2209 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 356 then # line 847 "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 2212 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 920 _goto_level = _again next end end end when 78 then # line 847 "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 2264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 213 then # line 1038 "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 1428 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 746 _goto_level = _again next end else emit(:tLCURLY, '{', @te - 1, @te) @cs = 738; begin p += 1 _goto_level = _out next end end end end when 235 then # line 1038 "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 1586 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG) @cs = 738; end end when 323 then # line 1038 "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 1791 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop emit(:tLAMBEG) else emit(:tLBRACE) end begin p += 1 _goto_level = _out next end end end when 426 then # line 1038 "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 1956 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit(:tLCURLY) else # 'do' emit_do end end @cs = 738; begin p += 1 _goto_level = _out next end end end when 427 then # line 1047 "lib/parser/lexer.rl" begin current_literal = literal if current_literal if current_literal.end_interp_brace_and_try_closing if version?(18, 19) emit(:tRCURLY, '}', p - 1, p) else emit(:tSTRING_DEND, '}', p - 1, p) end if current_literal.saved_herebody_s @herebody_s = current_literal.saved_herebody_s end p = p - 1; @cs = (stack_pop); begin p += 1 _goto_level = _out next end end end end # line 2176 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 483; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 62 then # line 1157 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end when 65 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 515 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 167 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1334 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 182 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1352 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 194 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1384 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 216 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1521 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin begin @cs = 746 _goto_level = _again next end end end when 231 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1593 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 243 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1614 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 267 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1876 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 329 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1900 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 339 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1931 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 360 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2209 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 80 then # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 2264 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 188 then # line 1201 "lib/parser/lexer.rl" begin tm = p end # line 1374 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = (arg_or_cmdarg); p = tm - 1; begin p += 1 _goto_level = _out next end end end when 279 then # line 1201 "lib/parser/lexer.rl" begin tm = p end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 252 then # line 1201 "lib/parser/lexer.rl" begin tm = p end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 352 then # line 1201 "lib/parser/lexer.rl" begin tm = p end # line 2152 "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 = 446; begin p += 1 _goto_level = _out next end end end when 354 then # line 1201 "lib/parser/lexer.rl" begin tm = p end # line 1 "NONE" begin case @act when 117 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit(:tLCURLY) else # 'do' emit_do end end @cs = 738; begin p += 1 _goto_level = _out next end end when 118 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 305; begin p += 1 _goto_level = _out next end end when 119 then begin begin p = (( @te))-1; end emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 738; begin p += 1 _goto_level = _out next end end when 120 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 515; begin p += 1 _goto_level = _out next end end when 121 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 738; begin p += 1 _goto_level = _out next end end when 122 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 491; begin p += 1 _goto_level = _out next end end when 123 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 515; begin p += 1 _goto_level = _out next end else @cs = 446; begin p += 1 _goto_level = _out next end end end when 124 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__) end begin p += 1 _goto_level = _out next end end when 125 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _goto_level = _out next end end when 126 then begin begin p = (( @te))-1; end digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end when 128 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tINTEGER, tok(@ts, @te - 1).to_i) p = p - 1; begin p += 1 _goto_level = _out next end end end when 129 then begin begin p = (( @te))-1; end if version?(18, 19, 20) diagnostic :error, :trailing_in_number, { :character => tok(@te - 1, @te) }, range(@te - 1, @te) else emit(:tFLOAT, tok(@ts, @te - 1).to_f) p = p - 1; begin p += 1 _goto_level = _out next end end end when 130 then begin begin p = (( @te))-1; end digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end when 132 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end when 136 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 137 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 = 446; begin p += 1 _goto_level = _out next end end end end when 189 then # line 1202 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1374 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = (arg_or_cmdarg); p = tm - 1; begin p += 1 _goto_level = _out next end end end when 280 then # line 1202 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 254 then # line 1202 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 353 then # line 1202 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2152 "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 = 446; begin p += 1 _goto_level = _out next end end end when 281 then # line 1207 "lib/parser/lexer.rl" begin tm = p end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 255 then # line 1207 "lib/parser/lexer.rl" begin tm = p end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 282 then # line 1208 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 256 then # line 1208 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 286 then # line 1209 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 259 then # line 1209 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 285 then # line 1210 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 258 then # line 1210 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1 "NONE" begin case @act when 96 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _goto_level = _out next end end when 97 then begin begin p = (( @te))-1; end emit(:kRESCUE, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 491; begin p += 1 _goto_level = _out next end end when 98 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 738; begin p += 1 _goto_level = _out next end end when 100 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 746 _goto_level = _again next end end when 101 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !@static_env.nil? && @static_env.declared?(tok) @cs = 746; begin p += 1 _goto_level = _out next end else @cs = (arg_or_cmdarg); begin p += 1 _goto_level = _out next end end end when 104 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 746 _goto_level = _again next end end end end when 283 then # line 1211 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 257 then # line 1211 "lib/parser/lexer.rl" begin tm = p - 3 end # line 1864 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 746 _goto_level = _again next end end end when 284 then # line 1216 "lib/parser/lexer.rl" begin tm = p - 2 end # line 1726 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 746; begin p += 1 _goto_level = _out next end end end when 409 then # line 1221 "lib/parser/lexer.rl" begin tm = p - 2 end # line 2134 "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 212 then # line 1227 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1422 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '[', @te - 1, @te) @cs = 515; begin p += 1 _goto_level = _out next end end end when 315 then # line 1227 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 1803 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK) begin p += 1 _goto_level = _out next end end end when 412 then # line 1227 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end # line 2198 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK2) @cs = 515; begin p += 1 _goto_level = _out next end end end when 204 then # line 1234 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1403 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if version?(18) emit(:tLPAREN2, '(', @te - 1, @te) @cs = 738; begin p += 1 _goto_level = _out next end else emit(:tLPAREN_ARG, '(', @te - 1, @te) @cs = 515; begin p += 1 _goto_level = _out next end end end end when 217 then # line 1234 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1416 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2) @cs = 515; begin p += 1 _goto_level = _out next end end end when 225 then # line 1234 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1540 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '(', @te - 1, @te) if version?(18) @cs = 738; begin p += 1 _goto_level = _out next end else @cs = 515; begin p += 1 _goto_level = _out next end end end end when 272 then # line 1234 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 1808 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN) begin p += 1 _goto_level = _out next end end end when 365 then # line 1234 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end # line 2172 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 515; begin p += 1 _goto_level = _out next end end end when 366 then # line 1240 "lib/parser/lexer.rl" begin @paren_nest -= 1 end # line 2176 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop if RBRACE_OR_RPAREN.include?(tok) @cs = 483; else # ) # fnext expr_endfn; ? end begin p += 1 _goto_level = _out next end end end when 50 then # line 1689 "lib/parser/lexer.rl" begin heredoc_e = p end # line 515 "lib/parser/lexer.rl" begin # Record position of a newline for precise location reporting on tNL # tokens. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 287 then # line 1690 "lib/parser/lexer.rl" begin new_herebody_s = p end # line 1691 "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? ? '"' : $3) delimiter = $4 if dedent_body && version?(18, 19, 20, 21, 22) emit(:tLSHFT, '<<', @ts, @ts + 2) p = @ts + 1 @cs = 515; begin p += 1 _goto_level = _out next end else @cs = (push_literal(type, delimiter, @ts, heredoc_e, indent, dedent_body)); if @herebody_s.nil? @herebody_s = new_herebody_s end p = @herebody_s - 1 end end end when 292 then # line 1746 "lib/parser/lexer.rl" begin @escape = nil end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 319 then # line 1818 "lib/parser/lexer.rl" begin tm = p end # line 1819 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:kRESCUE, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 491; begin p += 1 _goto_level = _out next end end end when 400 then # line 2036 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 394 then # line 2037 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 397 then # line 2038 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 391 then # line 2039 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 406 then # line 2040 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 375 then # line 2041 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end when 407 then # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end when 71 then # line 2235 "lib/parser/lexer.rl" begin tm = p end # line 2236 "lib/parser/lexer.rl" begin @te = p+1 begin p = tm - 1; begin @cs = 746 _goto_level = _again next end end end when 8 then # line 1 "NONE" begin @te = p+1 end # line 515 "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 173 then # line 1 "NONE" begin @te = p+1 end # line 1304 "lib/parser/lexer.rl" begin @act = 25; end when 160 then # line 1 "NONE" begin @te = p+1 end # line 1308 "lib/parser/lexer.rl" begin @act = 26; end when 156 then # line 1 "NONE" begin @te = p+1 end # line 1312 "lib/parser/lexer.rl" begin @act = 27; end when 20 then # line 1 "NONE" begin @te = p+1 end # line 1463 "lib/parser/lexer.rl" begin @act = 52; end when 206 then # line 1 "NONE" begin @te = p+1 end # line 1476 "lib/parser/lexer.rl" begin @act = 53; end when 21 then # line 1 "NONE" begin @te = p+1 end # line 1513 "lib/parser/lexer.rl" begin @act = 58; end when 199 then # line 1 "NONE" begin @te = p+1 end # line 1518 "lib/parser/lexer.rl" begin @act = 59; end when 226 then # line 1 "NONE" begin @te = p+1 end # line 1550 "lib/parser/lexer.rl" begin @act = 65; end when 39 then # line 1 "NONE" begin @te = p+1 end # line 1563 "lib/parser/lexer.rl" begin @act = 66; end when 247 then # line 1 "NONE" begin @te = p+1 end # line 1608 "lib/parser/lexer.rl" begin @act = 73; end when 236 then # line 1 "NONE" begin @te = p+1 end # line 1612 "lib/parser/lexer.rl" begin @act = 74; end when 250 then # line 1 "NONE" begin @te = p+1 end # line 1813 "lib/parser/lexer.rl" begin @act = 96; end when 318 then # line 1 "NONE" begin @te = p+1 end # line 1819 "lib/parser/lexer.rl" begin @act = 97; end when 317 then # line 1 "NONE" begin @te = p+1 end # line 1825 "lib/parser/lexer.rl" begin @act = 98; end when 52 then # line 1 "NONE" begin @te = p+1 end # line 1864 "lib/parser/lexer.rl" begin @act = 100; end when 248 then # line 1 "NONE" begin @te = p+1 end # line 1245 "lib/parser/lexer.rl" begin @act = 101; end when 251 then # line 1 "NONE" begin @te = p+1 end # line 1892 "lib/parser/lexer.rl" begin @act = 104; end when 422 then # line 1 "NONE" begin @te = p+1 end # line 1956 "lib/parser/lexer.rl" begin @act = 117; end when 417 then # line 1 "NONE" begin @te = p+1 end # line 1981 "lib/parser/lexer.rl" begin @act = 118; end when 425 then # line 1 "NONE" begin @te = p+1 end # line 1991 "lib/parser/lexer.rl" begin @act = 120; end when 418 then # line 1 "NONE" begin @te = p+1 end # line 1996 "lib/parser/lexer.rl" begin @act = 121; end when 419 then # line 1 "NONE" begin @te = p+1 end # line 2000 "lib/parser/lexer.rl" begin @act = 122; end when 424 then # line 1 "NONE" begin @te = p+1 end # line 2004 "lib/parser/lexer.rl" begin @act = 123; end when 416 then # line 1 "NONE" begin @te = p+1 end # line 2015 "lib/parser/lexer.rl" begin @act = 124; end when 411 then # line 1 "NONE" begin @te = p+1 end # line 2029 "lib/parser/lexer.rl" begin @act = 125; end when 346 then # line 1 "NONE" begin @te = p+1 end # line 2043 "lib/parser/lexer.rl" begin @act = 126; end when 377 then # line 1 "NONE" begin @te = p+1 end # line 2087 "lib/parser/lexer.rl" begin @act = 129; end when 59 then # line 1 "NONE" begin @te = p+1 end # line 2102 "lib/parser/lexer.rl" begin @act = 130; end when 349 then # line 1 "NONE" begin @te = p+1 end # line 2130 "lib/parser/lexer.rl" begin @act = 132; end when 341 then # line 1 "NONE" begin @te = p+1 end # line 1245 "lib/parser/lexer.rl" begin @act = 136; end when 351 then # line 1 "NONE" begin @te = p+1 end # line 2152 "lib/parser/lexer.rl" begin @act = 137; end when 150 then # line 515 "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 938 "lib/parser/lexer.rl" begin @te = p+1 begin current_literal = literal if @te == pe diagnostic :fatal, :string_eof, nil, range(current_literal.str_s, current_literal.str_s + 1) end if current_literal.heredoc? line = tok(@herebody_s, @ts).gsub(/\r+$/, BLANK_STRING) if version?(18, 19, 20) # See ruby:c48b4209c line = line.gsub(/\r.*$/, BLANK_STRING) end # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if current_literal.nest_and_try_closing(line, @herebody_s, @ts) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 379 then # line 2099 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 654 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 376 then # line 2100 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 654 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tFLOAT, Float(chars)) } end # line 2102 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@ts, @num_suffix_s) if version?(18, 19, 20) emit(:tFLOAT, Float(digits)) p = @num_suffix_s - 1 else @num_xfrm.call(digits) end begin p += 1 _goto_level = _out next end end end when 221 then # line 1 "NONE" begin @te = p+1 end # line 515 "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 1518 "lib/parser/lexer.rl" begin @act = 59; end when 29 then # line 1 "NONE" begin @te = p+1 end # line 847 "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 1513 "lib/parser/lexer.rl" begin @act = 58; end when 40 then # line 1 "NONE" begin @te = p+1 end # line 847 "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 1563 "lib/parser/lexer.rl" begin @act = 66; end when 66 then # line 1 "NONE" begin @te = p+1 end # line 1160 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p == pe ? p - 2 : p) end # line 1985 "lib/parser/lexer.rl" begin @act = 119; end when 31 then # line 1 "NONE" begin @te = p+1 end # line 1475 "lib/parser/lexer.rl" begin tm = p end # line 1476 "lib/parser/lexer.rl" begin @act = 53; end when 321 then # line 1 "NONE" begin @te = p+1 end # line 1818 "lib/parser/lexer.rl" begin tm = p end # line 1864 "lib/parser/lexer.rl" begin @act = 100; end when 320 then # line 1 "NONE" begin @te = p+1 end # line 1818 "lib/parser/lexer.rl" begin tm = p end # line 1245 "lib/parser/lexer.rl" begin @act = 101; end when 403 then # line 1 "NONE" begin @te = p+1 end # line 2040 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2043 "lib/parser/lexer.rl" begin @act = 126; end when 103 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 129 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 305 then # line 698 "lib/parser/lexer.rl" begin char = @source[p - 1].chr @escape = ESCAPES.fetch(char, char) end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 101 then # line 725 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 127 then # line 725 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 882 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin current_literal = literal if current_literal.nest_and_try_closing('\\', @ts, @ts + 1) # If the literal is actually closed by the backslash, # rewind the input prior to consuming the escape sequence. p = @escape_s - 1 @cs = (pop_literal); begin p += 1 _goto_level = _out next end else # Get the first character after the backslash. escaped_char = @source[@escape_s].chr if current_literal.munge_escape? escaped_char # If this particular literal uses this character as an opening # or closing delimiter, it is an escape sequence for that # particular character. Write it without the backslash. if current_literal.regexp? && REGEXP_META_CHARACTERS.match(escaped_char) # Regular expressions should include escaped delimiters in their # escaped form, except when the escaped character is # a closing delimiter but not a regexp metacharacter. # # The backslash itself cannot be used as a closing delimiter # at the same time as an escape symbol, but it is always munged, # so this branch also executes for the non-closing-delimiter case # for the backslash. current_literal.extend_string(tok, @ts, @te) else current_literal.extend_string(escaped_char, @ts, @te) end else # It does not. So this is an actual escape sequence, yay! # Two things to consider here. # # 1. The `escape' rule should be pure and so won't raise any # errors by itself. Instead, it stores them in lambdas. # # 2. Non-interpolated literals do not go through the aforementioned # rule. As \\ and \' (and variants) are munged, the full token # should always be written for such literals. @escape.call if @escape.respond_to? :call if current_literal.regexp? # Regular expressions should include escape sequences in their # escaped form. On the other hand, escaped newlines are removed. current_literal.extend_string(tok.gsub(ESCAPED_NEXT_LINE, BLANK_STRING), @ts, @te) else current_literal.extend_string(@escape || tok, @ts, @te) end end end end end when 303 then # line 725 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end # line 709 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord & 0x9f) end # line 713 "lib/parser/lexer.rl" begin @escape = encode_escape(@escape[0].ord | 0x80) end # line 1748 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tCHARACTER, value) end @cs = 746; begin p += 1 _goto_level = _out next end end end when 398 then # line 2036 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 392 then # line 2037 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 395 then # line 2038 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 389 then # line 2039 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 401 then # line 2040 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 371 then # line 2041 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2043 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin digits = tok(@num_digits_s, @num_suffix_s) if digits.end_with? UNDERSCORE_STRING diagnostic :error, :trailing_in_number, { :character => UNDERSCORE_STRING }, range(@te - 1, @te) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, :empty_numeric elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, :invalid_octal, nil, range(invalid_s, invalid_s + 1) end if version?(18, 19, 20) emit(:tINTEGER, digits.to_i(@num_base)) p = @num_suffix_s - 1 else @num_xfrm.call(digits.to_i(@num_base)) end begin p += 1 _goto_level = _out next end end end when 25 then # line 1 "NONE" begin @te = p+1 end # line 847 "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 tm = p end # line 1476 "lib/parser/lexer.rl" begin @act = 53; end when 408 then # line 1 "NONE" begin @te = p+1 end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2075 "lib/parser/lexer.rl" begin @act = 128; end when 404 then # line 1 "NONE" begin @te = p+1 end # line 2040 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2075 "lib/parser/lexer.rl" begin @act = 128; end when 374 then # line 1 "NONE" begin @te = p+1 end # line 2041 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end # line 2042 "lib/parser/lexer.rl" begin @num_suffix_s = p end # line 648 "lib/parser/lexer.rl" begin @num_xfrm = lambda { |chars| emit(:tINTEGER, chars) } end # line 2075 "lib/parser/lexer.rl" begin @act = 128; end # line 21206 "lib/parser/lexer.rb" end end end if _goto_level <= _again case _lex_to_state_actions[ @cs] when 73 then # line 1 "NONE" begin @ts = nil; end # line 21216 "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 311 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == klass.lex_error [ false, [ '$error', range(p - 1, p) ] ] else eof = @source_pts.size + 1 [ false, [ '$eof', range(eof, eof) ] ] end end protected def eof_codepoint?(point) [0x04, 0x1a, 0x00].include? point end def version?(*versions) versions.include?(@version) end def stack_pop @top -= 1 @stack[@top] end if "".respond_to?(:encode) def encode_escape(ord) ord.chr.force_encoding(@encoding) end def tok(s = @ts, e = @te) source = @source[s...e] return source unless @need_encode source.encode(@encoding) end else def encode_escape(ord) ord.chr end def tok(s = @ts, e = @te) @source[s...e] end end def range(s = @ts, e = @te) Parser::Source::Range.new(@source_buffer, s, e) end def emit(type, value = tok, s = @ts, e = @te) token = [ type, [ value, range(s, e) ] ] @token_queue.push(token) @tokens.push(token) if @tokens token end def emit_table(table, s = @ts, e = @te) value = tok(s, e) emit(table[value], value, s, e) end def emit_do(do_block=false) if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? || do_block emit(:kDO_BLOCK) else emit(:kDO) end end def arg_or_cmdarg if @command_state self.class.lex_en_expr_cmdarg else self.class.lex_en_expr_arg end end def emit_comment(s = @ts, e = @te) if @comments @comments.push(Parser::Source::Comment.new(range(s, e))) end if @tokens @tokens.push([ :tCOMMENT, [ tok(s, e), range(s, e) ] ]) end nil end def diagnostic(type, reason, arguments=nil, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, reason, arguments, location, highlights)) end # # === LITERAL STACK === # def push_literal(*args) new_literal = Literal.new(self, *args) @literal_stack.push(new_literal) if new_literal.words? if new_literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end else if new_literal.interpolate? self.class.lex_en_interp_string else self.class.lex_en_plain_string end end end def literal @literal_stack.last end def pop_literal old_literal = @literal_stack.pop @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 2279 "lib/parser/lexer.rl" # % end