diff --git a/samples/graphics/rsx_Basic/Makefile b/samples/graphics/rsx_Basic/Makefile new file mode 100644 index 00000000..f5b861d3 --- /dev/null +++ b/samples/graphics/rsx_Basic/Makefile @@ -0,0 +1,164 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(PSL1GHT)),) +$(error "Please set PSL1GHT in your environment. export PSL1GHT=") +endif + +include $(PSL1GHT)/ppu_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +SHADERS := shaders +INCLUDES := include + +TITLE := RSX Test - PSL1GHT +APPID := RSX00003 +CONTENTID := UP0001-$(APPID)_00-0000000000000000 + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -Wall -mcpu=cell $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lsimdmath -lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \ + $(foreach dir,$(SHADERS),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +export BUILDDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) +VCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.vcg))) +FCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.fcg))) + +VPOFILES := $(VCGFILES:.vcg=.vpo) +FPOFILES := $(FCGFILES:.fcg=.fpo) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) + export LD := $(CC) +else + export LD := $(CXX) +endif + +export OFILES := $(addsuffix .o,$(BINFILES)) \ + $(addsuffix .o,$(VPOFILES)) \ + $(addsuffix .o,$(FPOFILES)) \ + $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \ + $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + $(LIBPSL1GHT_INC) \ + -I$(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ + $(LIBPSL1GHT_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).fake.self + +#--------------------------------------------------------------------------------- +run: + ps3load $(OUTPUT).self + +#--------------------------------------------------------------------------------- +pkg: $(BUILD) $(OUTPUT).pkg + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).self: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +#--------------------------------------------------------------------------------- +# This rule links in binary data with the .bin extension +#--------------------------------------------------------------------------------- +%.bin.o : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.vpo.o : %.vpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.fpo.o : %.fpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/samples/graphics/rsx_Basic/Readme.md b/samples/graphics/rsx_Basic/Readme.md new file mode 100644 index 00000000..c5ae4d7d --- /dev/null +++ b/samples/graphics/rsx_Basic/Readme.md @@ -0,0 +1,4 @@ +A basic example to use RSX and Vertex/Fragment without camera position, eyes position, lights, 3D objects, textures, etc etc. +Just draw a tringle..... + +![RSX basic example](rsx_basic.png?raw=true) diff --git a/samples/graphics/rsx_Basic/include/acid.h b/samples/graphics/rsx_Basic/include/acid.h new file mode 100644 index 00000000..d1643518 --- /dev/null +++ b/samples/graphics/rsx_Basic/include/acid.h @@ -0,0 +1,2939 @@ +/* GIMP RGBA C-Source image dump (acid.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + unsigned char pixel_data[128 * 128 * 4 + 1]; +} acid = { + 128, 128, 4, + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\335\335\335\0\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31" + "\31\0\15\15\15\0\5\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0))" + ")\0===\0UUU\0qqq\0\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\345\345\345\0\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\15\15\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0qqq\0---\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\15\0\0\0" + "\23\0\0\0\30\0\0\0\35\0\0\0!\0\0\0$\0\0\0&\0\0\0(\0\0\0(\0\0\0'\0\0\0$\0" + "\0\0!\0\0\0\35\0\0\0\31\0\0\0\23\0\0\0\15\0\0\0\7\0\0\0\2\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0---\0qqq\0\271\271\271\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\17\0\0\0\30\0\0\0\40\0\0\0+\0\0\0B\0" + "\0\0\\\0\0\0t\0\0\0\211\0\0\0\234\0\0\0\254\0\0\0\271\0\0\0\304\0\0\0\313" + "\0\0\0\313\0\0\0\304\0\0\0\271\0\0\0\254\0\0\0\234\0\0\0\211\0\0\0t\0\0\0" + "\\\0\0\0B\0\0\0+\0\0\0!\0\0\0\30\0\0\0\17\0\0\0\6\0\0\0\1\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\21\21\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\2\0\0\0\14\0\0\0\30\0\0\0&\0\0\0?\0\0\0d\0\0\0\211\0\0\0\254\0\0\0\311" + "\0\0\0\331\0\0\0\341\0\0\0\347\0\0\0\354\0\0\0\361\0\0\0\365\0\0\0\370\0" + "\0\0\373\0\0\0\375\0\0\0\375\0\0\0\373\0\0\0\371\0\0\0\365\0\0\0\361\0\0" + "\0\355\0\0\0\347\0\0\0\341\0\0\0\331\0\0\0\312\0\0\0\254\0\0\0\211\0\0\0" + "d\0\0\0?\0\0\0&\0\0\0\30\0\0\0\15\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" + "\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0QQQ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0\33\0\0" + "\0.\0\0\0Y\0\0\0\211\0\0\0\265\0\0\0\325\0\0\0\343\0\0\0\354\0\0\0\365\0" + "\0\0\374\40!\0\377FH\0\377hk\0\377\206\213\0\377\240\246\0\377\267\275\0" + "\377\311\321\0\377\330\341\0\377\344\354\0\377\344\354\0\377\330\341\0\377" + "\311\321\0\377\267\275\0\377\240\246\0\377\206\213\0\377hk\0\377FH\0\377" + "\40!\0\377\0\0\0\375\0\0\0\365\0\0\0\355\0\0\0\343\0\0\0\326\0\0\0\266\0" + "\0\0\211\0\0\0Z\0\0\0/\0\0\0\33\0\0\0\16\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0QQQ\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\255\255\255\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\11\0\0\0" + "\27\0\0\0-\0\0\0]\0\0\0\224\0\0\0\304\0\0\0\336\0\0\0\354\0\0\0\367\30\31" + "\0\376QT\0\377\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0" + "\376\0\0\0\367\0\0\0\354\0\0\0\337\0\0\0\305\0\0\0\224\0\0\0]\0\0\0-\0\0" + "\0\30\0\0\0\11\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0===\0\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265" + "\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\15\0\0\0!\0\0\0H\0\0\0\204" + "\0\0\0\274\0\0\0\336\0\0\0\357\0\0\0\373BD\0\377\206\213\0\377\306\315\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\306\315\0\377\206\213\0\377BD\0\377\0\0\0\373" + "\0\0\0\357\0\0\0\337\0\0\0\275\0\0\0\204\0\0\0I\0\0\0!\0\0\0\15\0\0\0\3\0" + "\0\0\1\0\0\0\0\0\0\0\0===\0\265\265\265\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0QQ" + "Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0'\0\0\0[\0\0\0\236\0\0" + "\0\324\0\0\0\353\0\0\0\371FH\0\377\225\232\0\377\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\340\350\0\377\225\232\0\377FH\0\377\0\0\0\371\0" + "\0\0\353\0\0\0\324\0\0\0\236\0\0\0\\\0\0\0'\0\0\0\17\0\0\0\3\0\0\0\1\0\0" + "\0\0\0\0\0\0QQQ\0\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0(\0\0\0c\0\0\0\250" + "\0\0\0\332\0\0\0\361$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\361\0\0\0" + "\333\0\0\0\251\0\0\0c\0\0\0(\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0yyy" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0)))\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\13\0\0\0$\0\0\0_" + "\0\0\0\250\0\0\0\334\0\0\0\364BD\0\376\244\252\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0" + "\335\0\0\0\250\0\0\0`\0\0\0%\0\0\0\13\0\0\0\2\0\0\0\1\0\0\0\0)))\0\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\4\0\0\0\34\0\0\0O\0\0\0\234\0\0\0\332\0\0\0\364FH\0\376\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH\0\376\0\0\0\364\0" + "\0\0\332\0\0\0\234\0\0\0P\0\0\0\34\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0qqq\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315" + "\0""555\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0""0\0\0\0\203\0\0\0\321\0" + "\0\0\360+-\0\375\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377+-\0\375" + "\0\0\0\360\0\0\0\322\0\0\0\203\0\0\0""1\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0" + """555\0\315\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\4\0\0\0\40\0\0\0`\0\0\0\262\0\0\0\346\0\0\0\374~\203\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\374\0\0\0\347\0\0\0\263\0\0\0a\0\0\0\40\0\0\0\5\0\0" + "\0\1\0\0\0\0\1\1\1\0\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\14\0\0" + "\0/\0\0\0\207\0\0\0\326\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\311\321\0\377FH\0\376\0\0\0\366\0\0\0\327\0\0\0\207\0\0\0" + """0\0\0\0\14\0\0\0\2\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375" + "\375\375\0UUU\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\30\0\0\0S\0\0\0\252\0\0\0\345" + "\0\0\0\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\374\0\0\0\346" + "\0\0\0\253\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\0UUU\0\375\375\375\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0==" + "=\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\"\0\0\0q\0\0\0\316\0\0\0\363/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\364\0\0\0\316\0\0\0q\0\0\0\"\0\0\0\5\0\0\0\1\0\0\0\0===\0\351\351" + "\351\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\0\0\0\0\1" + "\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\\`\0\377\0\0\0\373\0\0\0\332\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1\0\0" + "\0\1---\0\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\331\331\331\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0""2\0\0\0\225\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\342\0\0\0" + "\226\0\0\0""2\0\0\0\11\0\0\0\1\0\0\0\1%%%\0\331\331\331\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\335\335\335\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0?\0\0\0\243\0\0\0\350\2\2\0\375\240\246\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377" + "\2\2\0\375\0\0\0\350\0\0\0\244\0\0\0@\0\0\0\15\0\0\0\2\0\0\0\1%%%\0\335\335" + "\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\0\0\0\0\1\0\0\0\16" + "\0\0\0H\0\0\0\257\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\355\0\0\0\257\0\0\0H\0\0\0" + "\17\0\0\0\2\0\0\0\1---\0\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\375\375\375\0===\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0H\0\0\0\264\0\0\0\360\40!\0\376\306\315\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\40!\0\376\0\0\0" + "\360\0\0\0\265\0\0\0I\0\0\0\15\0\0\0\1\0\0\0\1===\0\375\375\375\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0?\0\0\0\257\0\0\0\360$%\0\376\315\325\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\315\325" + "\0\377$%\0\377\0\0\0\360\0\0\0\257\0\0\0@\0\0\0\11\0\0\0\1\0\0\0\1UUU\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0""2" + "\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\355\0\0\0\244\0\0\0""2\0" + "\0\0\6\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\0\0\0\0\0\0\0\0\0\0" + "\0\4\0\0\0*\0\0\0\225\0\0\0\350\25\25\0\376\306\315\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\25" + "\25\0\376\0\0\0\350\0\0\0\226\0\0\0*\0\0\0\5\0\0\0\1\0\0\0\0\235\235\235" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315\0" + "\1\1\1\0\0\0\0\0\0\0\0\3\0\0\0\"\0\0\0\205\0\0\0\342\2\2\0\375\267\275\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\2\2\0\375\0\0\0\342\0\0\0" + "\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\0\315\315\315\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374" + "\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377\13\14\0\377UX\0\377" + "\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\14\0\0\0S\0\0\0\316\0\0\0\373\202\207" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\310\317\0\3779<\0\377\0\0\0\3779<\0\377\310\317\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\306\315\0\377!\"\0\377\0\0\0\377\0\0\0\377\4\4\0\377PT\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\316\0\0\0S\0\0\0\14\0\0\0\1\0\0\0\0qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\0\0\0\0\4\0\0\0/\0\0\0\253\0\0\0\364\\`\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377/2\0\377\0\0\0\377\0\0\0\377\0\0\0\377/2\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\20\20\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0" + "\253\0\0\0""0\0\0\0\5\0\0\0\1\0\0\0\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0)))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0" + "\0\207\0\0\0\345/1\0\376\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\207\215\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\357\370\0\377/1\0\376\0\0\0\346" + "\0\0\0\207\0\0\0\40\0\0\0\3\0\0\0\1)))\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0`\0\0\0\326\0\0\0\374\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\5\5\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\374\0\0\0" + "\327\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\0yyy\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0" + "\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0" + "\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\0\321\321\321\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0" + "\0\0\0\0\0\0\2\0\0\0\34\0\0\0\203\0\0\0\346FH\0\376\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\376" + "\0\0\0\347\0\0\0\204\0\0\0\34\0\0\0\2\0\0\0\1QQQ\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0\0\0\0" + "\0\0\0\12\0\0\0O\0\0\0\321\0\0\0\374\311\321\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321" + "\0\377\0\0\0\374\0\0\0\322\0\0\0P\0\0\0\13\0\0\0\1\0\0\0\0\265\265\265\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0" + "\0%\0\0\0\234\0\0\0\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\361\0\0\0\234\0\0\0%\0\0\0\3\0\0\0\1===\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0_\0" + "\0\0\332+-\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377+-\0\375\0\0\0\332\0\0\0`\0\0\0\17\0\0\0\1\0\0\0\0\255\255" + "\255\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0(\0\0\0\250\0\0\0" + "\363\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\244\252\0\377\0\0\0\364\0\0\0\250\0\0\0)\0\0\0\3\0\0\0\1=" + "==\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0c\0\0\0\334FH" + "\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\17\0\0\0" + "\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'\0\0\0\251\0\0\0\363\267\275" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0" + "(\0\0\0\3\0\0\0\1QQQ\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377BD\0\376\0\0\0\333\0\0\0\\" + "\0\0\0\16\0\0\0\1\0\0\0\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\2\0\0\0!\0\0\0\235\0\0\0\361\244\252\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\361\0" + "\0\0\236\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\35\35\35\0\0\0\0\0\0\0\0\10\0\0\0H\0\0\0\324$%\0\375\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377$%\0\375\0" + "\0\0\325\0\0\0I\0\0\0\11\0\0\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\0\0\0\0\26\0\0\0\203\0\0\0\353~\203\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203" + "\0\377\0\0\0\353\0\0\0\204\0\0\0\27\0\0\0\1\0\0\0\0\265\265\265\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\325\335\0\377\0\0\0\371\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\336FH\0\376\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0]\0\0\0\16\0\0\0\1\21\21\21\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\223\0\0\0\357\225\232\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\357\0\0\0\224\0\0\0\33\0" + "\0\0\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\340\350\0\377\0\0\0\373\0\0\0\305\0\0\0" + "/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0---\0\0\0\0\0\0\0\0\14\0\0\0Y\0\0\0\336BD\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\337\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0" + "\0\0\211\0\0\0\30\0\0\0\1\0\0\0\0\345\345\345\0\377\377\377\0\377\377\377" + "\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\265\0\0\0\367\306\315\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377" + "\0\0\0\367\0\0\0\266\0\0\0&\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377\377\377\0\377\377" + "\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343QT\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT" + "\0\377\0\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0" + "\15\15\15\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15\15\15\0\377\377\377" + "\0\335\335\335\0\0\0\0\0\0\0\0\0\0\0\0\40\0\0\0\254\0\0\0\365\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0\0!\0\0\0\1\0\0\0\0\335" + "\335\335\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0+\0\0\0\311\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\210\215\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\7\7\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\344\354\0\377\0\0\0\374\0\0\0\312\0\0\0,\0\0\0\2" + "\0\0\0\1\265\265\265\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0B\0\0\0\331\40" + "!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\20\21\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\40!\0\377\0\0\0" + "\332\0\0\0B\0\0\0\7\0\0\0\1\221\221\221\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0" + "\0\0\341FH\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\37702\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\37702\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377!\"\0\377\0\0" + "\0\377\0\0\0\377\4\4\0\377PS\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0\0\0\342\0" + "\0\0]\0\0\0\15\0\0\0\1qqq\0UUU\0\0\0\0\0\0\0\0\23\0\0\0t\0\0\0\347hk\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\3779<\0\377\0" + "\0\0\3779<\0\377\310\317\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377" + "\13\14\0\377UX\0\377\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0" + "\0\0u\0\0\0\23\0\0\0\1UUU\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206" + "\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===" + "\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0\361\240\246\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246" + "\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0\1)))\0\31\31\31\0\0\0\0\0\0\0\0" + "\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0\15\15\15\0\0\0\0\0\0\0\0$\0\0\0\271\0" + "\0\0\370\311\321\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\311\321\0\377\0\0\0\371\0\0\0\272\0\0\0" + "$\0\0\0\1\15\15\15\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\1\1\1" + "\0\0\0\0\0\0\0\0(\0\0\0\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\313\0\0\0)\0\0\0\1\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0(\0\0\0" + "\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\344\354\0\377\0\0\0\375\0\0\0\313\0\0" + "\0)\0\0\0\1\1\1\1\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\15\15" + "\15\0\0\0\0\0\0\0\0$\0\0\0\271\0\0\0\370\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321\0" + "\377\0\0\0\371\0\0\0\272\0\0\0$\0\0\0\1\15\15\15\0\31\31\31\0\0\0\0\0\0\0" + "\0\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0" + "\361\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\240\246\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0" + "\1)))\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206" + "\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===\0UUU\0\0\0\0\0\0\0\0\23" + "\0\0\0t\0\0\0\347hk\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0\0\0u\0\0\0\23\0\0\0" + "\1UUU\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\341FH\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0" + "\0\0\342\0\0\0]\0\0\0\15\0\0\0\1qqq\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0" + "B\0\0\0\331\40!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\40!\0\377\0\0\0\332\0\0\0C\0\0\0\7\0\0\0\1\221" + "\221\221\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0,\0\0\0\312\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\312\0\0\0,\0\0\0\2\0\0\0\1\265\265\265\0\335\335\335\0\0" + "\0\0\0\0\0\0\1\0\0\0!\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0" + "\0\"\0\0\0\1\0\0\0\1\335\335\335\0\377\377\377\0\15\15\15\0\0\0\0\0\0\0\0" + "\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15" + "\15\15\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343" + "QT\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT\0\377\0" + "\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0qqq\0\0" + "\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377" + "\377\377\0\377\377\377\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\266\0" + "\0\0\367\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\335\345\0\377\261\270\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\0\0\0\370" + "\0\0\0\266\0\0\0'\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377\377\377" + "\0\345\345\345\0\0\0\0\0\0\0\0\1\0\0\0\31\0\0\0\212\0\0\0\354\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\322\332\0\377\36" + "\37\0\377\10\10\0\377\265\273\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\316\326\0\377\230\235\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\0" + "\0\0\1\345\345\345\0\377\377\377\0\377\377\377\0\377\377\377\0---\0\0\0\0" + "\0\0\0\0\14\0\0\0Z\0\0\0\337BD\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\1\1\0\377\201\206\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0\377\17" + "\20\0\377\2\2\0\377\224\231\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\340\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377SV\0\377\353\364\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377w{\0\377\1\1\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377;>\0\377<>\0\377<>\0\377\303\312\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\0\0\0\373\0\0\0\305\0\0\0/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\1" + "\0\0\0\33\0\0\0\224\0\0\0\357\225\232\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\26\26\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377.0\0\377" + "\330\340\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\345\355\0\377?A" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\1\1\0\377\310\320\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\360\0\0\0" + "\225\0\0\0\34\0\0\0\1\0\0\0\1\271\271\271\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0" + "]\0\0\0\337FH\0\376\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\257\266\0\377\4\4\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\16\17\0\377\265\273" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\277\306\0\377\23\24\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\0\377\226\233\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0^\0\0\0\16\0\0\0\1\21\21" + "\21\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\300\307\0\377\30\31\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377z\177\0\377\355\366" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377pt\0\377\2\2\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2" + "\0\377\235\243\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\325\335\0\377\0\0\0\371" + "\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\1\0\0\0\27\0\0\0\204\0\0\0\353~\203\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\330\341\0\377&'\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\25\25\0\377\277\306\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\377" + "-/\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\25\25\0\377\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377~\203\0\377\0\0\0\354\0\0\0\205\0\0\0\30\0\0\0\1\0\0\0\1\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\35\35\35\0\0\0\0\0\0\0\0\11\0\0\0I\0\0\0\324" + "$%\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\350\360\0\377EG\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\2\2\0\377mq\0\377\352\363\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\342\352\0" + "\377fi\0\377\2\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377*,\0\377\333\344\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377$%\0\375\0\0\0\325\0\0\0J\0\0\0\11\0\0" + "\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\2" + "\0\0\0!\0\0\0\236\0\0\0\361\244\252\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377tx\0\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\35\36\0\377\235\243\0" + "\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\220" + "\225\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377gj\0\377\353\364\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\362\0" + "\0\0\237\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\1\0\0\0\16\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0" + "\377\13\14\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377-/\0\377\273\302\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355\366\0\377\177\204" + "\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\11\12\0\377\246\254\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "BD\0\376\0\0\0\333\0\0\0]\0\0\0\17\0\0\0\1\0\0\0\1\331\331\331\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'" + "\0\0\0\251\0\0\0\363\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\346\356\0\377HK\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377=?\0\377\247\255\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377\206\213\0\377" + "\34\35\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377/1\0\377\325\335\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0(\0\0\0\3\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0" + "\0\0\0\0\0\0\1\0\0\0\20\0\0\0d\0\0\0\335FH\0\375\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\211\217\0\377\10\11\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\14\15\0\377qu\0\377" + "\343\353\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\356\367\0\377\254\263\0\377hl\0\377\5\5\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\16\17\0\377\231\237\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\20\0\0\0\1\0\0\0\1\271\271\271" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0)\0\0\0\251\0\0\0\363\244\252\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\346\356\0\377fi\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\4\4\0\377BD\0\377\206\213\0\377\301\310\0\377\354\365\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340\350\0\377\230\235\0" + "\377^b\0\377\25\25\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377Z^" + "\0\377\335\345\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377" + "\0\0\0\364\0\0\0\251\0\0\0*\0\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255" + "\255\255\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0`\0\0\0\332+-\0\375\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\254\263\0\377\25\25\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\12\13\0\377;>\0\377UX\0" + "\377lp\0\377x|\0\377x|\0\377x|\0\377bf\0\377HK\0\377\6\6\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\37713\0\377\275\304" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "+-\0\375\0\0\0\332\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\1\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0%\0\0\0\234\0\0\0" + "\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\216\223\0\377\16\17\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + ",.\0\377\247\255\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0\361\0\0\0\235\0\0\0%\0" + "\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265" + "\265\265\0\0\0\0\0\0\0\0\1\0\0\0\13\0\0\0P\0\0\0\322\0\0\0\374\311\321\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355" + "\366\0\377\213\221\0\377\17\20\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\37724\0\377\246\254\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\311\321\0\377\0\0\0\374\0\0\0\323\0\0\0Q\0\0\0\14\0\0\0\1\0\0\0\1" + "\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0\34\0\0\0\204\0\0\0\347FH\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\356\367\0\377\235\243\0\377(*\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\5\0" + "\377hl\0\377\270\276\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377FH\0\377\0\0\0\347\0\0\0\204\0\0\0\35\0\0\0\2\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321" + "\321\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\320\330\0\377\\`\0\377\7" + "\7\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\3778:\0\377\226\233\0" + "\377\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\206\213\0\377\0\0\0\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\1" + "\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0a\0\0\0" + "\327\0\0\0\374\276\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\357\370\0\377\245\253\0\377w{\0\377:=\0\377\3\3\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377*,\0\377dh\0\377\217\224\0\377\350" + "\361\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\375\0\0\0\330\0\0\0b\0\0" + "\0\20\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + ")))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0\0\207\0\0\0\346/1\0\376\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\357\370\0\377\305\314\0\377\247\255\0\377" + "\212\220\0\377x}\0\377x}\0\377x}\0\377x}\0\377{\200\0\377\240\246\0\377\270" + "\276\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377/1\0\376\0\0\0\347\0\0\0\210\0\0\0!\0\0\0\3\0\0\0" + "\1)))\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""0\0\0\0\253\0\0\0\364\\`\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0\254\0\0\0""1" + "\0\0\0\6\0\0\0\1\0\0\0\1\265\265\265\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\1\0\0\0\14\0\0" + "\0T\0\0\0\317\0\0\0\373\202\207\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\317\0\0\0T\0\0\0\15\0\0\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374\240\246\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\315\315\315\0\1\1\1\0\0\0\0\1\0\0\0\4\0\0\0\"\0" + "\0\0\205\0\0\0\342\2\2\0\375\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267" + "\275\0\377\2\2\0\375\0\0\0\342\0\0\0\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\1\315" + "\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235" + "\235\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0+\0\0\0\226\0\0\0\350\25\25\0\376\306" + "\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\306\315\0\377\25\25\0\376\0\0\0\351\0\0\0\226\0\0\0+\0\0\0\6\0" + "\0\0\1\0\0\0\1\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0" + """2\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\356\0\0\0\245\0\0\0""3\0" + "\0\0\7\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0" + "\0\0\0\0\0\0\1\0\0\0\11\0\0\0@\0\0\0\260\0\0\0\360$%\0\376\315\325\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377$%\0\377\0\0\0\361\0\0\0\260\0\0\0A\0\0\0" + "\12\0\0\0\1\0\0\0\1UUU\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\375\375\375\0===\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0H\0\0\0\264\0\0\0\360" + "\40!\0\376\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\306\315\0\377\40!\0\376\0\0\0\361\0\0\0\265\0\0\0I\0\0\0\16" + "\0\0\0\2\0\0\0\1===\1\375\375\375\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\1\0\0\0\2\0\0\0\17" + "\0\0\0I\0\0\0\260\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\356\0\0\0\260\0\0\0I\0\0\0" + "\20\0\0\0\2\0\0\0\1---\1\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "%%%\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0@\0\0\0\244\0\0\0\350\2\2\0\375\240\246" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\240\246\0\377\2\2\0\375\0\0\0\351\0\0\0\245\0\0\0@\0\0\0\16" + "\0\0\0\2\0\0\0\1%%%\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\331\331\331\0%%%\0\0\0\0\1\0\0\0\2\0\0\0\12\0\0\0""2\0\0\0\226" + "\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\343\0\0\0\226\0\0\0""3\0\0\0" + "\12\0\0\0\2\0\0\0\1%%%\1\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\1\0\0" + "\0\1\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357" + "\370\0\377\\`\0\377\0\0\0\373\0\0\0\333\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1" + "\0\0\0\1---\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0" + "===\0\0\0\0\1\0\0\0\1\0\0\0\5\0\0\0#\0\0\0r\0\0\0\317\0\0\0\364/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\365\0\0\0\317\0\0\0r\0\0\0#\0\0\0\6\0\0\0\1\0\0\0\1===\1\351\351\351" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375\375\375" + "\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\31\0\0\0S\0\0\0\253\0\0\0\346\0\0\0" + "\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\375\0\0\0\347\0\0\0" + "\254\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\1UUU\0\375\375\375\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0/\0\0\0\210\0" + "\0\0\327\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\311\321\0\377FH\0\377\0\0\0\367\0\0\0\330\0\0\0\210\0\0\0""0\0\0\0\15\0" + "\0\0\3\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\5\0" + "\0\0!\0\0\0a\0\0\0\263\0\0\0\347\0\0\0\374~\203\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0" + "\374\0\0\0\347\0\0\0\264\0\0\0b\0\0\0!\0\0\0\6\0\0\0\1\0\0\0\1\1\1\1\1\235" + "\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\315\315\315\0""555\0\0\0\0\0\0\0\0\1\0" + "\0\0\3\0\0\0\17\0\0\0""1\0\0\0\204\0\0\0\322\0\0\0\361+-\0\375\244\252\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\244\252\0\377+-\0\375\0\0\0\361\0\0\0\323\0\0\0" + "\204\0\0\0""1\0\0\0\20\0\0\0\3\0\0\0\1\0\0\0\1""555\0\315\315\315\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0" + "\0\0\1\0\0\0\1\0\0\0\5\0\0\0\34\0\0\0P\0\0\0\234\0\0\0\332\0\0\0\364FH\0" + "\376\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH" + "\0\376\0\0\0\364\0\0\0\333\0\0\0\235\0\0\0Q\0\0\0\35\0\0\0\5\0\0\0\1\0\0" + "\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0)))\0\0" + "\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0%\0\0\0`\0\0\0\251\0\0\0\335\0\0\0\364" + "BD\0\376\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0\336\0\0\0\251\0\0\0a\0\0\0&" + "\0\0\0\14\0\0\0\3\0\0\0\1\0\0\0\1)))\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0" + "\0\1\0\0\0\1\0\0\0\3\0\0\0\17\0\0\0)\0\0\0d\0\0\0\251\0\0\0\333\0\0\0\362" + "$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\362\0\0\0\334\0\0\0\252\0\0\0" + "d\0\0\0)\0\0\0\17\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\321\321\321\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1\0" + "\0\0\4\0\0\0\20\0\0\0(\0\0\0\\\0\0\0\236\0\0\0\325\0\0\0\354\0\0\0\372FH" + "\0\377\225\232\0\377\340\350\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\225\232\0\377FH\0\377\0\0\0\372\0\0\0\354\0\0\0\325\0\0\0\236" + "\0\0\0]\0\0\0(\0\0\0\20\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\321\321\321" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\265\265\265\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\3\0\0\0" + "\16\0\0\0\"\0\0\0I\0\0\0\205\0\0\0\275\0\0\0\337\0\0\0\360\0\0\0\374BD\0" + "\377\206\213\0\377\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\206" + "\213\0\377BD\0\377\0\0\0\374\0\0\0\360\0\0\0\340\0\0\0\276\0\0\0\205\0\0" + "\0J\0\0\0\"\0\0\0\16\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1===\0\265\265\265\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255\255" + "\255\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\11\0\0\0\27\0\0\0-\0\0" + "\0]\0\0\0\225\0\0\0\305\0\0\0\337\0\0\0\355\0\0\0\370\30\31\0\376QT\0\377" + "\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0\376\0\0\0\370" + "\0\0\0\355\0\0\0\340\0\0\0\306\0\0\0\225\0\0\0^\0\0\0-\0\0\0\30\0\0\0\11" + "\0\0\0\3\0\0\0\1\0\0\0\1\0\0\0\1===\0\255\255\255\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\271\271\271\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\3\0\0\0\16\0\0\0\33\0\0\0/\0\0\0Z\0\0\0\212\0\0\0\266\0\0" + "\0\326\0\0\0\344\0\0\0\355\0\0\0\365\0\0\0\374\40!\0\377FH\0\377hk\0\377" + "\206\213\0\377\240\246\0\377\267\275\0\377\311\321\0\377\330\341\0\377\344" + "\354\0\377\344\354\0\377\330\341\0\377\311\321\0\377\267\275\0\377\240\246" + "\0\377\206\213\0\377hk\0\377FH\0\377\40!\0\377\0\0\0\375\0\0\0\366\0\0\0" + "\355\0\0\0\344\0\0\0\326\0\0\0\266\0\0\0\212\0\0\0Z\0\0\0/\0\0\0\33\0\0\0" + "\16\0\0\0\4\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\271\271\271\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\3\0\0\0\15\0\0\0\31\0\0\0'\0\0\0@\0\0\0e\0\0\0\212\0" + "\0\0\255\0\0\0\312\0\0\0\332\0\0\0\342\0\0\0\350\0\0\0\355\0\0\0\361\0\0" + "\0\365\0\0\0\371\0\0\0\373\0\0\0\375\0\0\0\375\0\0\0\374\0\0\0\371\0\0\0" + "\366\0\0\0\362\0\0\0\355\0\0\0\350\0\0\0\342\0\0\0\332\0\0\0\313\0\0\0\255" + "\0\0\0\212\0\0\0e\0\0\0@\0\0\0'\0\0\0\31\0\0\0\16\0\0\0\4\0\0\0\2\0\0\0\1" + "\0\0\0\1\0\0\0\1\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\2\0\0\0\6\0\0\0\17\0\0\0\31\0\0\0!\0\0\0,\0\0\0C\0\0\0]\0\0\0u\0\0\0\212" + "\0\0\0\235\0\0\0\255\0\0\0\272\0\0\0\305\0\0\0\314\0\0\0\314\0\0\0\305\0" + "\0\0\272\0\0\0\255\0\0\0\235\0\0\0\212\0\0\0u\0\0\0]\0\0\0C\0\0\0,\0\0\0" + "\"\0\0\0\31\0\0\0\20\0\0\0\7\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\21\21" + "\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0qqq\0---\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2" + "\0\0\0\7\0\0\0\15\0\0\0\23\0\0\0\31\0\0\0\35\0\0\0!\0\0\0$\0\0\0'\0\0\0)" + "\0\0\0)\0\0\0'\0\0\0%\0\0\0!\0\0\0\36\0\0\0\31\0\0\0\24\0\0\0\16\0\0\0\10" + "\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1---\0qqq\0\271\271" + "\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\15\15" + "\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31\31\0\15\15\15\0\5" + "\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0)))\0===\0UUU\0qqq\0" + "\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0", +}; + diff --git a/samples/graphics/rsx_Basic/include/mesh.h b/samples/graphics/rsx_Basic/include/mesh.h new file mode 100644 index 00000000..63665494 --- /dev/null +++ b/samples/graphics/rsx_Basic/include/mesh.h @@ -0,0 +1,62 @@ +#ifndef __MESH_H__ +#define __MESH_H__ + +#include + +using namespace Vectormath::Aos; + +template< class T > +inline const T& min_(const T& a,const T& b) +{ + return a +inline const T& max_(const T& a,const T& b) +{ + return a +inline const T clamp(const T& val,const T& low,const T& high) +{ + return min_(max_(val,low),high); +} + +struct S3DVertex +{ + S3DVertex() {}; + S3DVertex(f32 x,f32 y,f32 z,f32 nx,f32 ny,f32 nz,f32 tu,f32 tv) + : pos(x,y,z),nrm(nx,ny,nz),u(tu),v(tv) {}; + + inline S3DVertex& operator=(const S3DVertex& other) + { + pos = other.pos; + nrm = other.nrm; + u = other.u; + v = other.v; + return *this; + } + + Vector3 pos; + Vector3 nrm; + + f32 u,v; +}; + +template< class T > +class CMeshBuffer +{ +public: + CMeshBuffer() : indices(NULL),cnt_indices(0),vertices(NULL),cnt_vertices(0) {}; + + u16 *indices; + u32 cnt_indices; + + S3DVertex *vertices; + u32 cnt_vertices; +}; + +typedef CMeshBuffer SMeshBuffer; + +#endif diff --git a/samples/graphics/rsx_Basic/include/rsxutil.h b/samples/graphics/rsx_Basic/include/rsxutil.h new file mode 100644 index 00000000..009bbb98 --- /dev/null +++ b/samples/graphics/rsx_Basic/include/rsxutil.h @@ -0,0 +1,36 @@ +#ifndef __RSXUTIL_H__ +#define __RSXUTIL_H__ + +#include +#include + +#define DEFUALT_CB_SIZE 0x80000 // 512Kb default command buffer size +#define HOST_STATE_CB_SIZE 0x10000 // 64Kb state command buffer size (used for resetting certain default states) +#define HOST_ADDR_ALIGNMENT (1024*1024) +#define HOSTBUFFER_SIZE (128*1024*1024) + +#define FRAME_BUFFER_COUNT 2 + +extern gcmContextData *context; + +extern u32 curr_fb; + +extern u32 display_width; +extern u32 display_height; + +extern u32 depth_pitch; +extern u32 depth_offset; +extern u32 *depth_buffer; + +extern u32 color_pitch; +extern u32 color_offset[FRAME_BUFFER_COUNT]; +extern u32 *color_buffer[FRAME_BUFFER_COUNT]; + +extern f32 aspect_ratio; + +void setRenderTarget(u32 index); +void init_screen(void *host_addr,u32 size); +void waitflip(); +void flip(); + +#endif diff --git a/samples/graphics/rsx_Basic/rsx_basic.png b/samples/graphics/rsx_Basic/rsx_basic.png new file mode 100644 index 00000000..680f4afa Binary files /dev/null and b/samples/graphics/rsx_Basic/rsx_basic.png differ diff --git a/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.fcg b/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.fcg new file mode 100644 index 00000000..c378a720 --- /dev/null +++ b/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.fcg @@ -0,0 +1,9 @@ + +void main +( + float4 color_in : COLOR, + out float4 color_out : COLOR +) +{ + color_out = color_in; +} \ No newline at end of file diff --git a/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.vcg b/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.vcg new file mode 100644 index 00000000..0e2e3570 --- /dev/null +++ b/samples/graphics/rsx_Basic/shaders/diffuse_specular_shader.vcg @@ -0,0 +1,16 @@ +void main(float4 position : POSITION, + float4 color : COLOR0, + float2 texcoord : TEXCOORD0, + + uniform float4x4 modelViewProj, + + out float4 oPosition : POSITION, + out float4 oColor : COLOR0, + out float2 oTexCoord : TEXCOORD0 + ) + { + oPosition = mul(modelViewProj, position); + oColor = color; + oTexCoord = texcoord; + } + \ No newline at end of file diff --git a/samples/graphics/rsx_Basic/source/main.cpp b/samples/graphics/rsx_Basic/source/main.cpp new file mode 100644 index 00000000..42d7a73c --- /dev/null +++ b/samples/graphics/rsx_Basic/source/main.cpp @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include "acid.h" +#include "mesh.h" +#include "rsxutil.h" + +#include "diffuse_specular_shader_vpo.h" +#include "diffuse_specular_shader_fpo.h" + +typedef struct +{ + float x, y, z; + u32 rgba; +} Vertex_t; + +Vertex_t* vertex_buffer; +u32 VertexBufferOffset; + +u32 running = 0; + +u32 fp_offset; +u32 *fp_buffer; + + + +// vertex shader +rsxProgramConst *projMatrix; + +rsxProgramAttrib* mPosIndex = NULL; + +rsxProgramAttrib* mColIndex = NULL; + +u32 color_index; +u32 position_index; + + +void *vp_ucode = NULL; +rsxVertexProgram *vpo = (rsxVertexProgram*)diffuse_specular_shader_vpo; + +void *fp_ucode = NULL; +rsxFragmentProgram *fpo = (rsxFragmentProgram*)diffuse_specular_shader_fpo; + + +SYS_PROCESS_PARAM(1001, 0x100000); + +extern "C" { +static void program_exit_callback() +{ + gcmSetWaitFlip(context); + rsxFinish(context,1); +} + +static void sysutil_exit_callback(u64 status,u64 param,void *usrdata) +{ + switch(status) { + case SYSUTIL_EXIT_GAME: + running = 0; + break; + case SYSUTIL_DRAW_BEGIN: + case SYSUTIL_DRAW_END: + break; + default: + break; + } +} +} + + +static void setDrawEnv() +{ + rsxSetColorMask(context,GCM_COLOR_MASK_B | + GCM_COLOR_MASK_G | + GCM_COLOR_MASK_R | + GCM_COLOR_MASK_A); + + rsxSetColorMaskMrt(context,0); + + u16 x,y,w,h; + f32 min, max; + f32 scale[4],offset[4]; + + x = 0; + y = 0; + w = display_width; + h = display_height; + min = 0.0f; + max = 1.0f; + scale[0] = w*0.5f; + scale[1] = h*-0.5f; + scale[2] = (max - min)*0.5f; + scale[3] = 0.0f; + offset[0] = x + w*0.5f; + offset[1] = y + h*0.5f; + offset[2] = (max + min)*0.5f; + offset[3] = 0.0f; + + rsxSetViewport(context,x, y, w, h, min, max, scale, offset); + rsxSetScissor(context,x,y,w,h); + + rsxSetDepthTestEnable(context,GCM_TRUE); + rsxSetDepthFunc(context,GCM_LESS); + rsxSetShadeModel(context,GCM_SHADE_MODEL_SMOOTH); + rsxSetDepthWriteEnable(context,1); + rsxSetFrontFace(context,GCM_FRONTFACE_CCW); +} + +void init_shader() +{ + u32 fpsize = 0; + u32 vpsize = 0; + + rsxVertexProgramGetUCode(vpo, &vp_ucode, &vpsize); + + projMatrix = rsxVertexProgramGetConst(vpo, "modelViewProj"); + + mPosIndex = rsxVertexProgramGetAttrib(vpo, "position"); + + mColIndex = rsxVertexProgramGetAttrib(vpo, "color"); + + rsxFragmentProgramGetUCode(fpo, &fp_ucode, &fpsize); + + fp_buffer = (u32*)rsxMemalign(64,fpsize); + memcpy(fp_buffer,fp_ucode,fpsize); + + position_index = mPosIndex->index; + color_index = mColIndex->index; + + rsxAddressToOffset(fp_buffer,&fp_offset); + +} + +void drawFrame() +{ + u32 i, color; + + setDrawEnv(); + + // Screen clear color between red and blue + static float count = 0; + count += 0.1f; + unsigned char red = ((int)count) % 255; + unsigned char green = 32; + unsigned char blue = (255 - (int)count) % 255; + color = (blue << 0) | (green << 8) | (red << 16) | (255 << 24); + // Otherwise + //color = 0; // -> Black; + + rsxSetClearColor(context,color); + rsxSetClearDepthStencil(context,0xffffff00); + rsxClearSurface(context,GCM_CLEAR_R | + GCM_CLEAR_G | + GCM_CLEAR_B | + GCM_CLEAR_A | + GCM_CLEAR_S | + GCM_CLEAR_Z); + + rsxSetZControl(context,0,1,1); + + for(i=0;i<8;i++) + rsxSetViewportClip(context,i,display_width,display_height); + + Matrix4 tempMatrix = transpose(Matrix4::identity()); + + rsxAddressToOffset((void*)vertex_buffer, &VertexBufferOffset); + + rsxBindVertexArrayAttrib(context, position_index, 0, VertexBufferOffset, sizeof(Vertex_t), 3, GCM_VERTEX_DATA_TYPE_F32, GCM_LOCATION_RSX); + rsxBindVertexArrayAttrib(context, color_index, 0, VertexBufferOffset + sizeof(float) * 3, sizeof(Vertex_t), 3, GCM_VERTEX_DATA_TYPE_U8, GCM_LOCATION_RSX); + + rsxLoadVertexProgram(context, vpo, vp_ucode); + rsxSetVertexProgramParameter(context, vpo, projMatrix, (float*)&tempMatrix); + rsxLoadFragmentProgramLocation(context, fpo, fp_offset, GCM_LOCATION_RSX); + rsxDrawVertexArray(context, GCM_TYPE_TRIANGLES, 0, 3); + +} + +int main(int argc,const char *argv[]) +{ + padInfo padinfo; + padData paddata; + void *host_addr = memalign(HOST_ADDR_ALIGNMENT,HOSTBUFFER_SIZE); + + printf("rsxtest started...\n"); + + init_screen(host_addr,HOSTBUFFER_SIZE); + ioPadInit(7); + + //Create Triangle + void* ret = rsxMemalign(128, sizeof(Vertex_t) * 3); + vertex_buffer = (Vertex_t*)ret; + vertex_buffer[0].x = -1.0f; + vertex_buffer[0].y = -1.0f; + vertex_buffer[0].z = -1.0f; + vertex_buffer[0].rgba = 0x00ff0000; + + vertex_buffer[1].x = 1.0f; + vertex_buffer[1].y = -1.0f; + vertex_buffer[1].z = -1.0f; + vertex_buffer[1].rgba = 0x0000ff00; + + vertex_buffer[2].x = 0.0f; + vertex_buffer[2].y = 1.0f; + vertex_buffer[2].z = -1.0f; + vertex_buffer[2].rgba = 0xff000000; + + init_shader(); + + + atexit(program_exit_callback); + sysUtilRegisterCallback(0,sysutil_exit_callback,NULL); + + setDrawEnv(); + setRenderTarget(curr_fb); + + running = 1; + while(running) { + sysUtilCheckCallback(); + + ioPadGetInfo(&padinfo); + for(int i=0; i < MAX_PADS; i++){ + if(padinfo.status[i]){ + ioPadGetData(i, &paddata); + + if(paddata.BTN_CROSS) + goto done; + } + + } + + drawFrame(); + + + flip(); + } + +done: + printf("rsxtest done...\n"); + program_exit_callback(); + return 0; +} diff --git a/samples/graphics/rsx_Basic/source/rsxutil.cpp b/samples/graphics/rsx_Basic/source/rsxutil.cpp new file mode 100644 index 00000000..b86f41af --- /dev/null +++ b/samples/graphics/rsx_Basic/source/rsxutil.cpp @@ -0,0 +1,204 @@ +#include +#include +#include +#include +#include +#include + +#include + + +#include "rsxutil.h" + +#define GCM_LABEL_INDEX 255 + +videoResolution vResolution; +gcmContextData *context = NULL; + +u32 curr_fb = 0; +u32 first_fb = 1; + +u32 display_width; +u32 display_height; + +u32 depth_pitch; +u32 depth_offset; +u32 *depth_buffer; + +u32 color_pitch; +u32 color_offset[FRAME_BUFFER_COUNT]; +u32 *color_buffer[FRAME_BUFFER_COUNT]; + +f32 aspect_ratio; + +static u32 sResolutionIds[] = { + VIDEO_RESOLUTION_1080, + VIDEO_RESOLUTION_720, + VIDEO_RESOLUTION_480, + VIDEO_RESOLUTION_576 +}; +static size_t RESOLUTION_ID_COUNT = sizeof(sResolutionIds)/sizeof(u32); + +static u32 sLabelVal = 1; + + +static void waitFinish() +{ + rsxSetWriteBackendLabel(context,GCM_LABEL_INDEX,sLabelVal); + + rsxFlushBuffer(context); + + while(*(vu32*)gcmGetLabelAddress(GCM_LABEL_INDEX)!=sLabelVal) + usleep(30); + + ++sLabelVal; +} + +static void waitRSXIdle() +{ + rsxSetWriteBackendLabel(context,GCM_LABEL_INDEX,sLabelVal); + rsxSetWaitLabel(context,GCM_LABEL_INDEX,sLabelVal); + + ++sLabelVal; + + waitFinish(); +} + +void initVideoConfiguration() +{ + s32 rval = 0; + s32 resId = 0; + + for (size_t i=0;i < RESOLUTION_ID_COUNT;i++) { + rval = videoGetResolutionAvailability(VIDEO_PRIMARY, sResolutionIds[i], VIDEO_ASPECT_AUTO, 0); + if (rval != 1) continue; + + resId = sResolutionIds[i]; + rval = videoGetResolution(resId, &vResolution); + if(!rval) break; + } + + if(rval) { + printf("Error: videoGetResolutionAvailability failed. No usable resolution.\n"); + exit(1); + } + + videoConfiguration config = { + (u8)resId, + VIDEO_BUFFER_FORMAT_XRGB, + VIDEO_ASPECT_AUTO, + {0,0,0,0,0,0,0,0,0}, + (u32)vResolution.width*4 + }; + + rval = videoConfigure(VIDEO_PRIMARY, &config, NULL, 0); + if(rval) { + printf("Error: videoConfigure failed.\n"); + exit(1); + } + + videoState state; + + rval = videoGetState(VIDEO_PRIMARY, 0, &state); + switch(state.displayMode.aspect) { + case VIDEO_ASPECT_4_3: + aspect_ratio = 4.0f/3.0f; + break; + case VIDEO_ASPECT_16_9: + aspect_ratio = 16.0f/9.0f; + break; + default: + printf("unknown aspect ratio %x\n", state.displayMode.aspect); + aspect_ratio = 16.0f/9.0f; + break; + } + + display_height = vResolution.height; + display_width = vResolution.width; +} + +void setRenderTarget(u32 index) +{ + gcmSurface sf; + + sf.colorFormat = GCM_SURFACE_X8R8G8B8; + sf.colorTarget = GCM_SURFACE_TARGET_0; + sf.colorLocation[0] = GCM_LOCATION_RSX; + sf.colorOffset[0] = color_offset[index]; + sf.colorPitch[0] = color_pitch; + + sf.colorLocation[1] = GCM_LOCATION_RSX; + sf.colorLocation[2] = GCM_LOCATION_RSX; + sf.colorLocation[3] = GCM_LOCATION_RSX; + sf.colorOffset[1] = 0; + sf.colorOffset[2] = 0; + sf.colorOffset[3] = 0; + sf.colorPitch[1] = 64; + sf.colorPitch[2] = 64; + sf.colorPitch[3] = 64; + + sf.depthFormat = GCM_SURFACE_ZETA_Z24S8; + sf.depthLocation = GCM_LOCATION_RSX; + sf.depthOffset = depth_offset; + sf.depthPitch = depth_pitch; + + sf.type = GCM_SURFACE_TYPE_LINEAR; + sf.antiAlias = GCM_SURFACE_CENTER_1; + + sf.width = display_width; + sf.height = display_height; + sf.x = 0; + sf.y = 0; + + rsxSetSurface(context,&sf); +} + +void init_screen(void *host_addr,u32 size) +{ + u32 zs_depth = 4; + u32 color_depth = 4; + + rsxInit(&context,DEFUALT_CB_SIZE,size,host_addr); + + initVideoConfiguration(); + + waitRSXIdle(); + + gcmSetFlipMode(GCM_FLIP_VSYNC); + + color_pitch = display_width*color_depth; + depth_pitch = display_width*zs_depth; + + for (u32 i=0;i < FRAME_BUFFER_COUNT;i++) { + color_buffer[i] = (u32*)rsxMemalign(64,(display_height*color_pitch)); + rsxAddressToOffset(color_buffer[i],&color_offset[i]); + gcmSetDisplayBuffer(i,color_offset[i],color_pitch,display_width,display_height); + } + + depth_buffer = (u32*)rsxMemalign(64, display_height*depth_pitch); + rsxAddressToOffset(depth_buffer,&depth_offset); + +} + +void waitflip() +{ + while(gcmGetFlipStatus()!=0) + usleep(200); + gcmResetFlipStatus(); +} + +void flip() +{ + if(!first_fb) waitflip(); + else gcmResetFlipStatus(); + + gcmSetFlip(context,curr_fb); + rsxFlushBuffer(context); + + gcmSetWaitFlip(context); + + curr_fb ^= 1; + setRenderTarget(curr_fb); + + first_fb = 0; +} diff --git a/samples/graphics/rsx_Basic_Cube/Makefile b/samples/graphics/rsx_Basic_Cube/Makefile new file mode 100644 index 00000000..c76ea9e9 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/Makefile @@ -0,0 +1,164 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(PSL1GHT)),) +$(error "Please set PSL1GHT in your environment. export PSL1GHT=") +endif + +include $(PSL1GHT)/ppu_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source ../debugfont_renderer/source +DATA := data +SHADERS := shaders ../debugfont_renderer/shaders +INCLUDES := include ../debugfont_renderer/include + +TITLE := RSX Test - PSL1GHT +APPID := RSX00003 +CONTENTID := UP0001-$(APPID)_00-0000000000000000 + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -Wall -mcpu=cell $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lsimdmath -lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm -lsysmodule -lpngdec + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \ + $(foreach dir,$(SHADERS),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +export BUILDDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) +VCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.vcg))) +FCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.fcg))) + +VPOFILES := $(VCGFILES:.vcg=.vpo) +FPOFILES := $(FCGFILES:.fcg=.fpo) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) + export LD := $(CC) +else + export LD := $(CXX) +endif + +export OFILES := $(addsuffix .o,$(BINFILES)) \ + $(addsuffix .o,$(VPOFILES)) \ + $(addsuffix .o,$(FPOFILES)) \ + $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \ + $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + $(LIBPSL1GHT_INC) \ + -I$(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ + $(LIBPSL1GHT_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).fake.self + +#--------------------------------------------------------------------------------- +run: + ps3load $(OUTPUT).self + +#--------------------------------------------------------------------------------- +pkg: $(BUILD) $(OUTPUT).pkg + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).self: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +#--------------------------------------------------------------------------------- +# This rule links in binary data with the .bin extension +#--------------------------------------------------------------------------------- +%.bin.o : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.vpo.o : %.vpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.fpo.o : %.fpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/samples/graphics/rsx_Basic_Cube/Readme.md b/samples/graphics/rsx_Basic_Cube/Readme.md new file mode 100644 index 00000000..588a40dd --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/Readme.md @@ -0,0 +1,3 @@ +A basic cube example to use a texture on a cube and to rotate it. + +![RSX basic cube example](rsx_basic_cube.png?raw=true) diff --git a/samples/graphics/rsx_Basic_Cube/data/Stone_Texture_png.bin b/samples/graphics/rsx_Basic_Cube/data/Stone_Texture_png.bin new file mode 100644 index 00000000..26777bb1 Binary files /dev/null and b/samples/graphics/rsx_Basic_Cube/data/Stone_Texture_png.bin differ diff --git a/samples/graphics/rsx_Basic_Cube/include/acid.h b/samples/graphics/rsx_Basic_Cube/include/acid.h new file mode 100644 index 00000000..d1643518 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/include/acid.h @@ -0,0 +1,2939 @@ +/* GIMP RGBA C-Source image dump (acid.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + unsigned char pixel_data[128 * 128 * 4 + 1]; +} acid = { + 128, 128, 4, + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\335\335\335\0\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31" + "\31\0\15\15\15\0\5\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0))" + ")\0===\0UUU\0qqq\0\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\345\345\345\0\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\15\15\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0qqq\0---\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\15\0\0\0" + "\23\0\0\0\30\0\0\0\35\0\0\0!\0\0\0$\0\0\0&\0\0\0(\0\0\0(\0\0\0'\0\0\0$\0" + "\0\0!\0\0\0\35\0\0\0\31\0\0\0\23\0\0\0\15\0\0\0\7\0\0\0\2\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0---\0qqq\0\271\271\271\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\17\0\0\0\30\0\0\0\40\0\0\0+\0\0\0B\0" + "\0\0\\\0\0\0t\0\0\0\211\0\0\0\234\0\0\0\254\0\0\0\271\0\0\0\304\0\0\0\313" + "\0\0\0\313\0\0\0\304\0\0\0\271\0\0\0\254\0\0\0\234\0\0\0\211\0\0\0t\0\0\0" + "\\\0\0\0B\0\0\0+\0\0\0!\0\0\0\30\0\0\0\17\0\0\0\6\0\0\0\1\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\21\21\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\2\0\0\0\14\0\0\0\30\0\0\0&\0\0\0?\0\0\0d\0\0\0\211\0\0\0\254\0\0\0\311" + "\0\0\0\331\0\0\0\341\0\0\0\347\0\0\0\354\0\0\0\361\0\0\0\365\0\0\0\370\0" + "\0\0\373\0\0\0\375\0\0\0\375\0\0\0\373\0\0\0\371\0\0\0\365\0\0\0\361\0\0" + "\0\355\0\0\0\347\0\0\0\341\0\0\0\331\0\0\0\312\0\0\0\254\0\0\0\211\0\0\0" + "d\0\0\0?\0\0\0&\0\0\0\30\0\0\0\15\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" + "\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0QQQ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0\33\0\0" + "\0.\0\0\0Y\0\0\0\211\0\0\0\265\0\0\0\325\0\0\0\343\0\0\0\354\0\0\0\365\0" + "\0\0\374\40!\0\377FH\0\377hk\0\377\206\213\0\377\240\246\0\377\267\275\0" + "\377\311\321\0\377\330\341\0\377\344\354\0\377\344\354\0\377\330\341\0\377" + "\311\321\0\377\267\275\0\377\240\246\0\377\206\213\0\377hk\0\377FH\0\377" + "\40!\0\377\0\0\0\375\0\0\0\365\0\0\0\355\0\0\0\343\0\0\0\326\0\0\0\266\0" + "\0\0\211\0\0\0Z\0\0\0/\0\0\0\33\0\0\0\16\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0QQQ\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\255\255\255\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\11\0\0\0" + "\27\0\0\0-\0\0\0]\0\0\0\224\0\0\0\304\0\0\0\336\0\0\0\354\0\0\0\367\30\31" + "\0\376QT\0\377\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0" + "\376\0\0\0\367\0\0\0\354\0\0\0\337\0\0\0\305\0\0\0\224\0\0\0]\0\0\0-\0\0" + "\0\30\0\0\0\11\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0===\0\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265" + "\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\15\0\0\0!\0\0\0H\0\0\0\204" + "\0\0\0\274\0\0\0\336\0\0\0\357\0\0\0\373BD\0\377\206\213\0\377\306\315\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\306\315\0\377\206\213\0\377BD\0\377\0\0\0\373" + "\0\0\0\357\0\0\0\337\0\0\0\275\0\0\0\204\0\0\0I\0\0\0!\0\0\0\15\0\0\0\3\0" + "\0\0\1\0\0\0\0\0\0\0\0===\0\265\265\265\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0QQ" + "Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0'\0\0\0[\0\0\0\236\0\0" + "\0\324\0\0\0\353\0\0\0\371FH\0\377\225\232\0\377\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\340\350\0\377\225\232\0\377FH\0\377\0\0\0\371\0" + "\0\0\353\0\0\0\324\0\0\0\236\0\0\0\\\0\0\0'\0\0\0\17\0\0\0\3\0\0\0\1\0\0" + "\0\0\0\0\0\0QQQ\0\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0(\0\0\0c\0\0\0\250" + "\0\0\0\332\0\0\0\361$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\361\0\0\0" + "\333\0\0\0\251\0\0\0c\0\0\0(\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0yyy" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0)))\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\13\0\0\0$\0\0\0_" + "\0\0\0\250\0\0\0\334\0\0\0\364BD\0\376\244\252\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0" + "\335\0\0\0\250\0\0\0`\0\0\0%\0\0\0\13\0\0\0\2\0\0\0\1\0\0\0\0)))\0\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\4\0\0\0\34\0\0\0O\0\0\0\234\0\0\0\332\0\0\0\364FH\0\376\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH\0\376\0\0\0\364\0" + "\0\0\332\0\0\0\234\0\0\0P\0\0\0\34\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0qqq\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315" + "\0""555\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0""0\0\0\0\203\0\0\0\321\0" + "\0\0\360+-\0\375\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377+-\0\375" + "\0\0\0\360\0\0\0\322\0\0\0\203\0\0\0""1\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0" + """555\0\315\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\4\0\0\0\40\0\0\0`\0\0\0\262\0\0\0\346\0\0\0\374~\203\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\374\0\0\0\347\0\0\0\263\0\0\0a\0\0\0\40\0\0\0\5\0\0" + "\0\1\0\0\0\0\1\1\1\0\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\14\0\0" + "\0/\0\0\0\207\0\0\0\326\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\311\321\0\377FH\0\376\0\0\0\366\0\0\0\327\0\0\0\207\0\0\0" + """0\0\0\0\14\0\0\0\2\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375" + "\375\375\0UUU\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\30\0\0\0S\0\0\0\252\0\0\0\345" + "\0\0\0\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\374\0\0\0\346" + "\0\0\0\253\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\0UUU\0\375\375\375\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0==" + "=\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\"\0\0\0q\0\0\0\316\0\0\0\363/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\364\0\0\0\316\0\0\0q\0\0\0\"\0\0\0\5\0\0\0\1\0\0\0\0===\0\351\351" + "\351\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\0\0\0\0\1" + "\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\\`\0\377\0\0\0\373\0\0\0\332\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1\0\0" + "\0\1---\0\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\331\331\331\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0""2\0\0\0\225\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\342\0\0\0" + "\226\0\0\0""2\0\0\0\11\0\0\0\1\0\0\0\1%%%\0\331\331\331\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\335\335\335\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0?\0\0\0\243\0\0\0\350\2\2\0\375\240\246\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377" + "\2\2\0\375\0\0\0\350\0\0\0\244\0\0\0@\0\0\0\15\0\0\0\2\0\0\0\1%%%\0\335\335" + "\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\0\0\0\0\1\0\0\0\16" + "\0\0\0H\0\0\0\257\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\355\0\0\0\257\0\0\0H\0\0\0" + "\17\0\0\0\2\0\0\0\1---\0\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\375\375\375\0===\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0H\0\0\0\264\0\0\0\360\40!\0\376\306\315\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\40!\0\376\0\0\0" + "\360\0\0\0\265\0\0\0I\0\0\0\15\0\0\0\1\0\0\0\1===\0\375\375\375\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0?\0\0\0\257\0\0\0\360$%\0\376\315\325\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\315\325" + "\0\377$%\0\377\0\0\0\360\0\0\0\257\0\0\0@\0\0\0\11\0\0\0\1\0\0\0\1UUU\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0""2" + "\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\355\0\0\0\244\0\0\0""2\0" + "\0\0\6\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\0\0\0\0\0\0\0\0\0\0" + "\0\4\0\0\0*\0\0\0\225\0\0\0\350\25\25\0\376\306\315\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\25" + "\25\0\376\0\0\0\350\0\0\0\226\0\0\0*\0\0\0\5\0\0\0\1\0\0\0\0\235\235\235" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315\0" + "\1\1\1\0\0\0\0\0\0\0\0\3\0\0\0\"\0\0\0\205\0\0\0\342\2\2\0\375\267\275\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\2\2\0\375\0\0\0\342\0\0\0" + "\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\0\315\315\315\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374" + "\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377\13\14\0\377UX\0\377" + "\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\14\0\0\0S\0\0\0\316\0\0\0\373\202\207" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\310\317\0\3779<\0\377\0\0\0\3779<\0\377\310\317\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\306\315\0\377!\"\0\377\0\0\0\377\0\0\0\377\4\4\0\377PT\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\316\0\0\0S\0\0\0\14\0\0\0\1\0\0\0\0qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\0\0\0\0\4\0\0\0/\0\0\0\253\0\0\0\364\\`\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377/2\0\377\0\0\0\377\0\0\0\377\0\0\0\377/2\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\20\20\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0" + "\253\0\0\0""0\0\0\0\5\0\0\0\1\0\0\0\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0)))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0" + "\0\207\0\0\0\345/1\0\376\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\207\215\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\357\370\0\377/1\0\376\0\0\0\346" + "\0\0\0\207\0\0\0\40\0\0\0\3\0\0\0\1)))\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0`\0\0\0\326\0\0\0\374\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\5\5\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\374\0\0\0" + "\327\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\0yyy\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0" + "\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0" + "\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\0\321\321\321\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0" + "\0\0\0\0\0\0\2\0\0\0\34\0\0\0\203\0\0\0\346FH\0\376\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\376" + "\0\0\0\347\0\0\0\204\0\0\0\34\0\0\0\2\0\0\0\1QQQ\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0\0\0\0" + "\0\0\0\12\0\0\0O\0\0\0\321\0\0\0\374\311\321\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321" + "\0\377\0\0\0\374\0\0\0\322\0\0\0P\0\0\0\13\0\0\0\1\0\0\0\0\265\265\265\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0" + "\0%\0\0\0\234\0\0\0\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\361\0\0\0\234\0\0\0%\0\0\0\3\0\0\0\1===\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0_\0" + "\0\0\332+-\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377+-\0\375\0\0\0\332\0\0\0`\0\0\0\17\0\0\0\1\0\0\0\0\255\255" + "\255\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0(\0\0\0\250\0\0\0" + "\363\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\244\252\0\377\0\0\0\364\0\0\0\250\0\0\0)\0\0\0\3\0\0\0\1=" + "==\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0c\0\0\0\334FH" + "\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\17\0\0\0" + "\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'\0\0\0\251\0\0\0\363\267\275" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0" + "(\0\0\0\3\0\0\0\1QQQ\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377BD\0\376\0\0\0\333\0\0\0\\" + "\0\0\0\16\0\0\0\1\0\0\0\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\2\0\0\0!\0\0\0\235\0\0\0\361\244\252\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\361\0" + "\0\0\236\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\35\35\35\0\0\0\0\0\0\0\0\10\0\0\0H\0\0\0\324$%\0\375\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377$%\0\375\0" + "\0\0\325\0\0\0I\0\0\0\11\0\0\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\0\0\0\0\26\0\0\0\203\0\0\0\353~\203\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203" + "\0\377\0\0\0\353\0\0\0\204\0\0\0\27\0\0\0\1\0\0\0\0\265\265\265\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\325\335\0\377\0\0\0\371\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\336FH\0\376\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0]\0\0\0\16\0\0\0\1\21\21\21\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\223\0\0\0\357\225\232\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\357\0\0\0\224\0\0\0\33\0" + "\0\0\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\340\350\0\377\0\0\0\373\0\0\0\305\0\0\0" + "/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0---\0\0\0\0\0\0\0\0\14\0\0\0Y\0\0\0\336BD\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\337\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0" + "\0\0\211\0\0\0\30\0\0\0\1\0\0\0\0\345\345\345\0\377\377\377\0\377\377\377" + "\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\265\0\0\0\367\306\315\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377" + "\0\0\0\367\0\0\0\266\0\0\0&\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377\377\377\0\377\377" + "\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343QT\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT" + "\0\377\0\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0" + "\15\15\15\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15\15\15\0\377\377\377" + "\0\335\335\335\0\0\0\0\0\0\0\0\0\0\0\0\40\0\0\0\254\0\0\0\365\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0\0!\0\0\0\1\0\0\0\0\335" + "\335\335\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0+\0\0\0\311\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\210\215\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\7\7\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\344\354\0\377\0\0\0\374\0\0\0\312\0\0\0,\0\0\0\2" + "\0\0\0\1\265\265\265\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0B\0\0\0\331\40" + "!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\20\21\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\40!\0\377\0\0\0" + "\332\0\0\0B\0\0\0\7\0\0\0\1\221\221\221\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0" + "\0\0\341FH\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\37702\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\37702\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377!\"\0\377\0\0" + "\0\377\0\0\0\377\4\4\0\377PS\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0\0\0\342\0" + "\0\0]\0\0\0\15\0\0\0\1qqq\0UUU\0\0\0\0\0\0\0\0\23\0\0\0t\0\0\0\347hk\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\3779<\0\377\0" + "\0\0\3779<\0\377\310\317\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377" + "\13\14\0\377UX\0\377\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0" + "\0\0u\0\0\0\23\0\0\0\1UUU\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206" + "\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===" + "\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0\361\240\246\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246" + "\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0\1)))\0\31\31\31\0\0\0\0\0\0\0\0" + "\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0\15\15\15\0\0\0\0\0\0\0\0$\0\0\0\271\0" + "\0\0\370\311\321\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\311\321\0\377\0\0\0\371\0\0\0\272\0\0\0" + "$\0\0\0\1\15\15\15\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\1\1\1" + "\0\0\0\0\0\0\0\0(\0\0\0\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\313\0\0\0)\0\0\0\1\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0(\0\0\0" + "\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\344\354\0\377\0\0\0\375\0\0\0\313\0\0" + "\0)\0\0\0\1\1\1\1\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\15\15" + "\15\0\0\0\0\0\0\0\0$\0\0\0\271\0\0\0\370\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321\0" + "\377\0\0\0\371\0\0\0\272\0\0\0$\0\0\0\1\15\15\15\0\31\31\31\0\0\0\0\0\0\0" + "\0\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0" + "\361\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\240\246\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0" + "\1)))\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206" + "\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===\0UUU\0\0\0\0\0\0\0\0\23" + "\0\0\0t\0\0\0\347hk\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0\0\0u\0\0\0\23\0\0\0" + "\1UUU\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\341FH\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0" + "\0\0\342\0\0\0]\0\0\0\15\0\0\0\1qqq\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0" + "B\0\0\0\331\40!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\40!\0\377\0\0\0\332\0\0\0C\0\0\0\7\0\0\0\1\221" + "\221\221\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0,\0\0\0\312\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\312\0\0\0,\0\0\0\2\0\0\0\1\265\265\265\0\335\335\335\0\0" + "\0\0\0\0\0\0\1\0\0\0!\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0" + "\0\"\0\0\0\1\0\0\0\1\335\335\335\0\377\377\377\0\15\15\15\0\0\0\0\0\0\0\0" + "\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15" + "\15\15\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343" + "QT\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT\0\377\0" + "\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0qqq\0\0" + "\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377" + "\377\377\0\377\377\377\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\266\0" + "\0\0\367\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\335\345\0\377\261\270\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\0\0\0\370" + "\0\0\0\266\0\0\0'\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377\377\377" + "\0\345\345\345\0\0\0\0\0\0\0\0\1\0\0\0\31\0\0\0\212\0\0\0\354\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\322\332\0\377\36" + "\37\0\377\10\10\0\377\265\273\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\316\326\0\377\230\235\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\0" + "\0\0\1\345\345\345\0\377\377\377\0\377\377\377\0\377\377\377\0---\0\0\0\0" + "\0\0\0\0\14\0\0\0Z\0\0\0\337BD\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\1\1\0\377\201\206\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0\377\17" + "\20\0\377\2\2\0\377\224\231\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\340\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377SV\0\377\353\364\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377w{\0\377\1\1\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377;>\0\377<>\0\377<>\0\377\303\312\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\0\0\0\373\0\0\0\305\0\0\0/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\1" + "\0\0\0\33\0\0\0\224\0\0\0\357\225\232\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\26\26\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377.0\0\377" + "\330\340\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\345\355\0\377?A" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\1\1\0\377\310\320\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\360\0\0\0" + "\225\0\0\0\34\0\0\0\1\0\0\0\1\271\271\271\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0" + "]\0\0\0\337FH\0\376\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\257\266\0\377\4\4\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\16\17\0\377\265\273" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\277\306\0\377\23\24\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\0\377\226\233\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0^\0\0\0\16\0\0\0\1\21\21" + "\21\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\300\307\0\377\30\31\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377z\177\0\377\355\366" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377pt\0\377\2\2\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2" + "\0\377\235\243\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\325\335\0\377\0\0\0\371" + "\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\1\0\0\0\27\0\0\0\204\0\0\0\353~\203\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\330\341\0\377&'\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\25\25\0\377\277\306\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\377" + "-/\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\25\25\0\377\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377~\203\0\377\0\0\0\354\0\0\0\205\0\0\0\30\0\0\0\1\0\0\0\1\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\35\35\35\0\0\0\0\0\0\0\0\11\0\0\0I\0\0\0\324" + "$%\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\350\360\0\377EG\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\2\2\0\377mq\0\377\352\363\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\342\352\0" + "\377fi\0\377\2\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377*,\0\377\333\344\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377$%\0\375\0\0\0\325\0\0\0J\0\0\0\11\0\0" + "\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\2" + "\0\0\0!\0\0\0\236\0\0\0\361\244\252\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377tx\0\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\35\36\0\377\235\243\0" + "\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\220" + "\225\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377gj\0\377\353\364\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\362\0" + "\0\0\237\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\1\0\0\0\16\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0" + "\377\13\14\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377-/\0\377\273\302\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355\366\0\377\177\204" + "\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\11\12\0\377\246\254\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "BD\0\376\0\0\0\333\0\0\0]\0\0\0\17\0\0\0\1\0\0\0\1\331\331\331\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'" + "\0\0\0\251\0\0\0\363\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\346\356\0\377HK\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377=?\0\377\247\255\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377\206\213\0\377" + "\34\35\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377/1\0\377\325\335\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0(\0\0\0\3\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0" + "\0\0\0\0\0\0\1\0\0\0\20\0\0\0d\0\0\0\335FH\0\375\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\211\217\0\377\10\11\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\14\15\0\377qu\0\377" + "\343\353\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\356\367\0\377\254\263\0\377hl\0\377\5\5\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\16\17\0\377\231\237\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\20\0\0\0\1\0\0\0\1\271\271\271" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0)\0\0\0\251\0\0\0\363\244\252\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\346\356\0\377fi\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\4\4\0\377BD\0\377\206\213\0\377\301\310\0\377\354\365\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340\350\0\377\230\235\0" + "\377^b\0\377\25\25\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377Z^" + "\0\377\335\345\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377" + "\0\0\0\364\0\0\0\251\0\0\0*\0\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255" + "\255\255\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0`\0\0\0\332+-\0\375\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\254\263\0\377\25\25\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\12\13\0\377;>\0\377UX\0" + "\377lp\0\377x|\0\377x|\0\377x|\0\377bf\0\377HK\0\377\6\6\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\37713\0\377\275\304" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "+-\0\375\0\0\0\332\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\1\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0%\0\0\0\234\0\0\0" + "\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\216\223\0\377\16\17\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + ",.\0\377\247\255\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0\361\0\0\0\235\0\0\0%\0" + "\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265" + "\265\265\0\0\0\0\0\0\0\0\1\0\0\0\13\0\0\0P\0\0\0\322\0\0\0\374\311\321\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355" + "\366\0\377\213\221\0\377\17\20\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\37724\0\377\246\254\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\311\321\0\377\0\0\0\374\0\0\0\323\0\0\0Q\0\0\0\14\0\0\0\1\0\0\0\1" + "\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0\34\0\0\0\204\0\0\0\347FH\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\356\367\0\377\235\243\0\377(*\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\5\0" + "\377hl\0\377\270\276\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377FH\0\377\0\0\0\347\0\0\0\204\0\0\0\35\0\0\0\2\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321" + "\321\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\320\330\0\377\\`\0\377\7" + "\7\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\3778:\0\377\226\233\0" + "\377\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\206\213\0\377\0\0\0\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\1" + "\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0a\0\0\0" + "\327\0\0\0\374\276\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\357\370\0\377\245\253\0\377w{\0\377:=\0\377\3\3\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377*,\0\377dh\0\377\217\224\0\377\350" + "\361\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\375\0\0\0\330\0\0\0b\0\0" + "\0\20\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + ")))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0\0\207\0\0\0\346/1\0\376\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\357\370\0\377\305\314\0\377\247\255\0\377" + "\212\220\0\377x}\0\377x}\0\377x}\0\377x}\0\377{\200\0\377\240\246\0\377\270" + "\276\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377/1\0\376\0\0\0\347\0\0\0\210\0\0\0!\0\0\0\3\0\0\0" + "\1)))\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""0\0\0\0\253\0\0\0\364\\`\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0\254\0\0\0""1" + "\0\0\0\6\0\0\0\1\0\0\0\1\265\265\265\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\1\0\0\0\14\0\0" + "\0T\0\0\0\317\0\0\0\373\202\207\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\317\0\0\0T\0\0\0\15\0\0\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374\240\246\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\315\315\315\0\1\1\1\0\0\0\0\1\0\0\0\4\0\0\0\"\0" + "\0\0\205\0\0\0\342\2\2\0\375\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267" + "\275\0\377\2\2\0\375\0\0\0\342\0\0\0\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\1\315" + "\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235" + "\235\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0+\0\0\0\226\0\0\0\350\25\25\0\376\306" + "\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\306\315\0\377\25\25\0\376\0\0\0\351\0\0\0\226\0\0\0+\0\0\0\6\0" + "\0\0\1\0\0\0\1\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0" + """2\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\356\0\0\0\245\0\0\0""3\0" + "\0\0\7\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0" + "\0\0\0\0\0\0\1\0\0\0\11\0\0\0@\0\0\0\260\0\0\0\360$%\0\376\315\325\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377$%\0\377\0\0\0\361\0\0\0\260\0\0\0A\0\0\0" + "\12\0\0\0\1\0\0\0\1UUU\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\375\375\375\0===\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0H\0\0\0\264\0\0\0\360" + "\40!\0\376\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\306\315\0\377\40!\0\376\0\0\0\361\0\0\0\265\0\0\0I\0\0\0\16" + "\0\0\0\2\0\0\0\1===\1\375\375\375\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\1\0\0\0\2\0\0\0\17" + "\0\0\0I\0\0\0\260\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\356\0\0\0\260\0\0\0I\0\0\0" + "\20\0\0\0\2\0\0\0\1---\1\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "%%%\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0@\0\0\0\244\0\0\0\350\2\2\0\375\240\246" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\240\246\0\377\2\2\0\375\0\0\0\351\0\0\0\245\0\0\0@\0\0\0\16" + "\0\0\0\2\0\0\0\1%%%\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\331\331\331\0%%%\0\0\0\0\1\0\0\0\2\0\0\0\12\0\0\0""2\0\0\0\226" + "\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\343\0\0\0\226\0\0\0""3\0\0\0" + "\12\0\0\0\2\0\0\0\1%%%\1\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\1\0\0" + "\0\1\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357" + "\370\0\377\\`\0\377\0\0\0\373\0\0\0\333\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1" + "\0\0\0\1---\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0" + "===\0\0\0\0\1\0\0\0\1\0\0\0\5\0\0\0#\0\0\0r\0\0\0\317\0\0\0\364/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\365\0\0\0\317\0\0\0r\0\0\0#\0\0\0\6\0\0\0\1\0\0\0\1===\1\351\351\351" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375\375\375" + "\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\31\0\0\0S\0\0\0\253\0\0\0\346\0\0\0" + "\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\375\0\0\0\347\0\0\0" + "\254\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\1UUU\0\375\375\375\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0/\0\0\0\210\0" + "\0\0\327\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\311\321\0\377FH\0\377\0\0\0\367\0\0\0\330\0\0\0\210\0\0\0""0\0\0\0\15\0" + "\0\0\3\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\5\0" + "\0\0!\0\0\0a\0\0\0\263\0\0\0\347\0\0\0\374~\203\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0" + "\374\0\0\0\347\0\0\0\264\0\0\0b\0\0\0!\0\0\0\6\0\0\0\1\0\0\0\1\1\1\1\1\235" + "\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\315\315\315\0""555\0\0\0\0\0\0\0\0\1\0" + "\0\0\3\0\0\0\17\0\0\0""1\0\0\0\204\0\0\0\322\0\0\0\361+-\0\375\244\252\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\244\252\0\377+-\0\375\0\0\0\361\0\0\0\323\0\0\0" + "\204\0\0\0""1\0\0\0\20\0\0\0\3\0\0\0\1\0\0\0\1""555\0\315\315\315\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0" + "\0\0\1\0\0\0\1\0\0\0\5\0\0\0\34\0\0\0P\0\0\0\234\0\0\0\332\0\0\0\364FH\0" + "\376\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH" + "\0\376\0\0\0\364\0\0\0\333\0\0\0\235\0\0\0Q\0\0\0\35\0\0\0\5\0\0\0\1\0\0" + "\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0)))\0\0" + "\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0%\0\0\0`\0\0\0\251\0\0\0\335\0\0\0\364" + "BD\0\376\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0\336\0\0\0\251\0\0\0a\0\0\0&" + "\0\0\0\14\0\0\0\3\0\0\0\1\0\0\0\1)))\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0" + "\0\1\0\0\0\1\0\0\0\3\0\0\0\17\0\0\0)\0\0\0d\0\0\0\251\0\0\0\333\0\0\0\362" + "$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\362\0\0\0\334\0\0\0\252\0\0\0" + "d\0\0\0)\0\0\0\17\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\321\321\321\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1\0" + "\0\0\4\0\0\0\20\0\0\0(\0\0\0\\\0\0\0\236\0\0\0\325\0\0\0\354\0\0\0\372FH" + "\0\377\225\232\0\377\340\350\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\225\232\0\377FH\0\377\0\0\0\372\0\0\0\354\0\0\0\325\0\0\0\236" + "\0\0\0]\0\0\0(\0\0\0\20\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\321\321\321" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\265\265\265\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\3\0\0\0" + "\16\0\0\0\"\0\0\0I\0\0\0\205\0\0\0\275\0\0\0\337\0\0\0\360\0\0\0\374BD\0" + "\377\206\213\0\377\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\206" + "\213\0\377BD\0\377\0\0\0\374\0\0\0\360\0\0\0\340\0\0\0\276\0\0\0\205\0\0" + "\0J\0\0\0\"\0\0\0\16\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1===\0\265\265\265\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255\255" + "\255\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\11\0\0\0\27\0\0\0-\0\0" + "\0]\0\0\0\225\0\0\0\305\0\0\0\337\0\0\0\355\0\0\0\370\30\31\0\376QT\0\377" + "\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0\376\0\0\0\370" + "\0\0\0\355\0\0\0\340\0\0\0\306\0\0\0\225\0\0\0^\0\0\0-\0\0\0\30\0\0\0\11" + "\0\0\0\3\0\0\0\1\0\0\0\1\0\0\0\1===\0\255\255\255\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\271\271\271\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\3\0\0\0\16\0\0\0\33\0\0\0/\0\0\0Z\0\0\0\212\0\0\0\266\0\0" + "\0\326\0\0\0\344\0\0\0\355\0\0\0\365\0\0\0\374\40!\0\377FH\0\377hk\0\377" + "\206\213\0\377\240\246\0\377\267\275\0\377\311\321\0\377\330\341\0\377\344" + "\354\0\377\344\354\0\377\330\341\0\377\311\321\0\377\267\275\0\377\240\246" + "\0\377\206\213\0\377hk\0\377FH\0\377\40!\0\377\0\0\0\375\0\0\0\366\0\0\0" + "\355\0\0\0\344\0\0\0\326\0\0\0\266\0\0\0\212\0\0\0Z\0\0\0/\0\0\0\33\0\0\0" + "\16\0\0\0\4\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\271\271\271\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\3\0\0\0\15\0\0\0\31\0\0\0'\0\0\0@\0\0\0e\0\0\0\212\0" + "\0\0\255\0\0\0\312\0\0\0\332\0\0\0\342\0\0\0\350\0\0\0\355\0\0\0\361\0\0" + "\0\365\0\0\0\371\0\0\0\373\0\0\0\375\0\0\0\375\0\0\0\374\0\0\0\371\0\0\0" + "\366\0\0\0\362\0\0\0\355\0\0\0\350\0\0\0\342\0\0\0\332\0\0\0\313\0\0\0\255" + "\0\0\0\212\0\0\0e\0\0\0@\0\0\0'\0\0\0\31\0\0\0\16\0\0\0\4\0\0\0\2\0\0\0\1" + "\0\0\0\1\0\0\0\1\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\2\0\0\0\6\0\0\0\17\0\0\0\31\0\0\0!\0\0\0,\0\0\0C\0\0\0]\0\0\0u\0\0\0\212" + "\0\0\0\235\0\0\0\255\0\0\0\272\0\0\0\305\0\0\0\314\0\0\0\314\0\0\0\305\0" + "\0\0\272\0\0\0\255\0\0\0\235\0\0\0\212\0\0\0u\0\0\0]\0\0\0C\0\0\0,\0\0\0" + "\"\0\0\0\31\0\0\0\20\0\0\0\7\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\21\21" + "\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0qqq\0---\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2" + "\0\0\0\7\0\0\0\15\0\0\0\23\0\0\0\31\0\0\0\35\0\0\0!\0\0\0$\0\0\0'\0\0\0)" + "\0\0\0)\0\0\0'\0\0\0%\0\0\0!\0\0\0\36\0\0\0\31\0\0\0\24\0\0\0\16\0\0\0\10" + "\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1---\0qqq\0\271\271" + "\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\15\15" + "\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31\31\0\15\15\15\0\5" + "\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0)))\0===\0UUU\0qqq\0" + "\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0", +}; + diff --git a/samples/graphics/rsx_Basic_Cube/include/mesh.h b/samples/graphics/rsx_Basic_Cube/include/mesh.h new file mode 100644 index 00000000..63665494 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/include/mesh.h @@ -0,0 +1,62 @@ +#ifndef __MESH_H__ +#define __MESH_H__ + +#include + +using namespace Vectormath::Aos; + +template< class T > +inline const T& min_(const T& a,const T& b) +{ + return a +inline const T& max_(const T& a,const T& b) +{ + return a +inline const T clamp(const T& val,const T& low,const T& high) +{ + return min_(max_(val,low),high); +} + +struct S3DVertex +{ + S3DVertex() {}; + S3DVertex(f32 x,f32 y,f32 z,f32 nx,f32 ny,f32 nz,f32 tu,f32 tv) + : pos(x,y,z),nrm(nx,ny,nz),u(tu),v(tv) {}; + + inline S3DVertex& operator=(const S3DVertex& other) + { + pos = other.pos; + nrm = other.nrm; + u = other.u; + v = other.v; + return *this; + } + + Vector3 pos; + Vector3 nrm; + + f32 u,v; +}; + +template< class T > +class CMeshBuffer +{ +public: + CMeshBuffer() : indices(NULL),cnt_indices(0),vertices(NULL),cnt_vertices(0) {}; + + u16 *indices; + u32 cnt_indices; + + S3DVertex *vertices; + u32 cnt_vertices; +}; + +typedef CMeshBuffer SMeshBuffer; + +#endif diff --git a/samples/graphics/rsx_Basic_Cube/include/rsxutil.h b/samples/graphics/rsx_Basic_Cube/include/rsxutil.h new file mode 100644 index 00000000..4a87ea9b --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/include/rsxutil.h @@ -0,0 +1,38 @@ +#ifndef __RSXUTIL_H__ +#define __RSXUTIL_H__ + +#include +#include + +#include + +#define DEFUALT_CB_SIZE 0x80000 // 512Kb default command buffer size +#define HOST_STATE_CB_SIZE 0x10000 // 64Kb state command buffer size (used for resetting certain default states) +#define HOST_ADDR_ALIGNMENT (1024*1024) +#define HOSTBUFFER_SIZE (128*1024*1024) + +#define FRAME_BUFFER_COUNT 2 + +extern gcmContextData *context; + +extern u32 curr_fb; + +extern u32 display_width; +extern u32 display_height; + +extern u32 depth_pitch; +extern u32 depth_offset; +extern u32 *depth_buffer; + +extern u32 color_pitch; +extern u32 color_offset[FRAME_BUFFER_COUNT]; +extern u32 *color_buffer[FRAME_BUFFER_COUNT]; + +extern f32 aspect_ratio; + +void setRenderTarget(u32 index); +void init_screen(void *host_addr,u32 size); +void waitflip(); +void flip(); + +#endif diff --git a/samples/graphics/rsx_Basic_Cube/rsx_basic_cube.png b/samples/graphics/rsx_Basic_Cube/rsx_basic_cube.png new file mode 100644 index 00000000..75b48136 Binary files /dev/null and b/samples/graphics/rsx_Basic_Cube/rsx_basic_cube.png differ diff --git a/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.fcg b/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.fcg new file mode 100644 index 00000000..7a9f6b40 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.fcg @@ -0,0 +1,13 @@ +void main +( + float2 texcoord : TEXCOORD2, + + + uniform sampler2D texture, + + out float4 oColor +) +{ + + oColor = tex2D(texture, texcoord); +} diff --git a/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.vcg b/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.vcg new file mode 100644 index 00000000..c11e6228 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/shaders/diffuse_specular_shader.vcg @@ -0,0 +1,21 @@ +void main +( + float3 vertexPosition : POSITION, + float3 vertexNormal : NORMAL, + float2 vertexTexcoord : TEXCOORD0, + + uniform float4x4 projMatrix, + uniform float4x4 modelViewMatrix, + + out float4 ePosition : POSITION, + out float4 oPosition : TEXCOORD0, + out float3 oNormal : TEXCOORD1, + out float2 oTexcoord : TEXCOORD2 +) +{ + ePosition = mul(mul(projMatrix,modelViewMatrix),float4(vertexPosition,1.0f)); + + oPosition = float4(vertexPosition,1.0f); + oNormal = vertexNormal; + oTexcoord = vertexTexcoord; +} diff --git a/samples/graphics/rsx_Basic_Cube/source/main.cpp b/samples/graphics/rsx_Basic_Cube/source/main.cpp new file mode 100644 index 00000000..ed0f2e1a --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/source/main.cpp @@ -0,0 +1,425 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Stone_Texture_png_bin.h" +#include + +#include +#include +#include + +#include "acid.h" +#include "mesh.h" +#include "rsxutil.h" + +#include "diffuse_specular_shader_vpo.h" +#include "diffuse_specular_shader_fpo.h" + +#define DEGTORAD(a) ( (a) * 0.01745329252f ) +#define RADTODEG(a) ( (a) * 57.29577951f ) +#define TEXTURE_SIZE 128 +float perlin2d(float x, float y, float freq, int depth); + +u32 running = 0; + +u32 fp_offset; +u32 *fp_buffer; + +u32 *texture_buffer[3]; +u32 texture_buffer_idx = 0; +u32 texture_offset[3]; +pngData *png; +f32 rotx = 0.0f; +f32 roty = 0.0f; + +// vertex shader +rsxProgramConst *projMatrix; +rsxProgramConst *mvMatrix; + +// fragment shader +rsxProgramAttrib *textureUnit; + +Point3 eye_pos = Point3(0.0f,0.0f,20.0f); +Point3 eye_dir = Point3(0.0f,0.0f,0.0f); +Vector3 up_vec = Vector3(0.0f,1.0f,0.0f); + +void *vp_ucode = NULL; +rsxVertexProgram *vpo = (rsxVertexProgram*)diffuse_specular_shader_vpo; + +void *fp_ucode = NULL; +rsxFragmentProgram *fpo = (rsxFragmentProgram*)diffuse_specular_shader_fpo; + +static Matrix4 P; +static SMeshBuffer *cube = NULL; + +SYS_PROCESS_PARAM(1001, 0x100000); + +extern "C" { +static void program_exit_callback() +{ + gcmSetWaitFlip(context); + rsxFinish(context,1); +} + +static void sysutil_exit_callback(u64 status,u64 param,void *usrdata) +{ + switch(status) { + case SYSUTIL_EXIT_GAME: + running = 0; + break; + case SYSUTIL_DRAW_BEGIN: + case SYSUTIL_DRAW_END: + break; + default: + break; + } +} +} + + +static void init_texture() +{ + u32 i; + u8 *buffer; + + //Init png texture + const u8* data = (u8*)png->bmp_out; + texture_buffer[0] = (u32*)rsxMemalign(128, (png->height * png->pitch)); + + if(!texture_buffer[0]) return; + + rsxAddressToOffset(texture_buffer[0],&texture_offset[0]); + + buffer = (u8*)texture_buffer[0]; + for (i = 0; i < png->height * png->pitch; i += 4) { + buffer[i + 0] = *data++; + buffer[i + 1] = *data++; + buffer[i + 2] = *data++; + buffer[i + 3] = *data++; + } + + //Init acid pixel texture + data = acid.pixel_data; + texture_buffer[1] = (u32*)rsxMemalign(128,(acid.width*acid.height*4)); + + if (!texture_buffer[1]) return; + + rsxAddressToOffset(texture_buffer[1], &texture_offset[1]); + + buffer = (u8*)texture_buffer[1]; + for(i=0;icnt_indices = 36; + buffer->indices = (u16*)rsxMemalign(128,buffer->cnt_indices*sizeof(u16)); + + for(i=0;i<36;i++) buffer->indices[i] = u[i]; + + buffer->cnt_vertices = 12; + buffer->vertices = (S3DVertex*)rsxMemalign(128,buffer->cnt_vertices*sizeof(S3DVertex)); + + buffer->vertices[0] = S3DVertex(0,0,0, -1,-1,-1, 1, 0); + buffer->vertices[1] = S3DVertex(1,0,0, 1,-1,-1, 1, 1); + buffer->vertices[2] = S3DVertex(1,1,0, 1, 1,-1, 0, 1); + buffer->vertices[3] = S3DVertex(0,1,0, -1, 1,-1, 0, 0); + buffer->vertices[4] = S3DVertex(1,0,1, 1,-1, 1, 1, 0); + buffer->vertices[5] = S3DVertex(1,1,1, 1, 1, 1, 0, 0); + buffer->vertices[6] = S3DVertex(0,1,1, -1, 1, 1, 0, 1); + buffer->vertices[7] = S3DVertex(0,0,1, -1,-1, 1, 1, 1); + buffer->vertices[8] = S3DVertex(0,1,1, -1, 1, 1, 1, 0); + buffer->vertices[9] = S3DVertex(0,1,0, -1, 1,-1, 1, 1); + buffer->vertices[10] = S3DVertex(1,0,1, 1,-1, 1, 0, 1); + buffer->vertices[11] = S3DVertex(1,0,0, 1,-1,-1, 0, 0); + + for(i=0;i<12;i++) { + buffer->vertices[i].pos -= Vector3(0.5f,0.5f,0.5f); + buffer->vertices[i].pos *= size; + } + + return buffer; +} + +static void setTexture(u8 textureUnit, u32 numTex) +{ + u32 width = 128; + u32 height = 128; + u32 pitch = (width*4); + gcmTexture texture; + + if(!texture_buffer[0]) return; + + rsxInvalidateTextureCache(context,GCM_INVALIDATE_TEXTURE); + + //texture.format = (GCM_TEXTURE_FORMAT_A8R8G8B8 | GCM_TEXTURE_FORMAT_LIN); + texture.format = (GCM_TEXTURE_FORMAT_A8R8G8B8 | GCM_TEXTURE_FORMAT_LIN | GCM_TEXTURE_FORMAT_NRM); + + texture.mipmap = 1; + texture.dimension = GCM_TEXTURE_DIMS_2D; + texture.cubemap = GCM_FALSE; + texture.remap = ((GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_B_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_G_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_R_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_A_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_B << GCM_TEXTURE_REMAP_COLOR_B_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_G << GCM_TEXTURE_REMAP_COLOR_G_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_R << GCM_TEXTURE_REMAP_COLOR_R_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_A << GCM_TEXTURE_REMAP_COLOR_A_SHIFT)); + texture.width = width; + texture.height = height; + texture.depth = 1; + texture.location = GCM_LOCATION_RSX; + texture.pitch = pitch; + texture.offset = texture_offset[numTex]; + rsxLoadTexture(context,textureUnit,&texture); + rsxTextureControl(context,textureUnit,GCM_TRUE,0<<8,12<<8,GCM_TEXTURE_MAX_ANISO_1); + rsxTextureFilter(context,textureUnit,0,GCM_TEXTURE_LINEAR,GCM_TEXTURE_LINEAR,GCM_TEXTURE_CONVOLUTION_QUINCUNX); + rsxTextureWrapMode(context,textureUnit,GCM_TEXTURE_CLAMP_TO_EDGE,GCM_TEXTURE_CLAMP_TO_EDGE,GCM_TEXTURE_CLAMP_TO_EDGE,0,GCM_TEXTURE_ZFUNC_LESS,0); +} + +static void setDrawEnv() +{ + rsxSetColorMask(context,GCM_COLOR_MASK_B | + GCM_COLOR_MASK_G | + GCM_COLOR_MASK_R | + GCM_COLOR_MASK_A); + + rsxSetColorMaskMrt(context,0); + + u16 x,y,w,h; + f32 min, max; + f32 scale[4],offset[4]; + + x = 0; + y = 0; + w = display_width; + h = display_height; + min = 0.0f; + max = 1.0f; + scale[0] = w*0.5f; + scale[1] = h*-0.5f; + scale[2] = (max - min)*0.5f; + scale[3] = 0.0f; + offset[0] = x + w*0.5f; + offset[1] = y + h*0.5f; + offset[2] = (max + min)*0.5f; + offset[3] = 0.0f; + + rsxSetViewport(context,x, y, w, h, min, max, scale, offset); + rsxSetScissor(context,x,y,w,h); + + rsxSetDepthTestEnable(context,GCM_TRUE); + rsxSetDepthFunc(context,GCM_LESS); + rsxSetShadeModel(context,GCM_SHADE_MODEL_SMOOTH); + rsxSetDepthWriteEnable(context,1); + rsxSetFrontFace(context,GCM_FRONTFACE_CCW); +} + +void init_shader() +{ + u32 fpsize = 0; + u32 vpsize = 0; + + rsxVertexProgramGetUCode(vpo, &vp_ucode, &vpsize); + printf("vpsize: %d\n", vpsize); + + projMatrix = rsxVertexProgramGetConst(vpo,"projMatrix"); + if (projMatrix) + printf("projMatrix OK\n"); + mvMatrix = rsxVertexProgramGetConst(vpo,"modelViewMatrix"); + if (mvMatrix) + printf("mvMatrix OK\n"); + rsxFragmentProgramGetUCode(fpo, &fp_ucode, &fpsize); + printf("fpsize: %d\n", fpsize); + + fp_buffer = (u32*)rsxMemalign(64,fpsize); + memcpy(fp_buffer,fp_ucode,fpsize); + rsxAddressToOffset(fp_buffer,&fp_offset); + + textureUnit = rsxFragmentProgramGetAttrib(fpo,"texture"); + if (textureUnit) + printf("textureUnit OK\n"); +} + +void drawFrame() +{ + u32 i,offset,color = 0; + Matrix4 rotX,rotY; + Matrix4 viewMatrix,modelMatrix,modelMatrixIT,modelViewMatrix; + + SMeshBuffer *mesh = NULL; + + setDrawEnv(); + setTexture(textureUnit->index, texture_buffer_idx); + + rsxSetClearColor(context,color); + rsxSetClearDepthStencil(context,0xffffff00); + rsxClearSurface(context,GCM_CLEAR_R | + GCM_CLEAR_G | + GCM_CLEAR_B | + GCM_CLEAR_A | + GCM_CLEAR_S | + GCM_CLEAR_Z); + + rsxSetZControl(context,0,1,1); + + for(i=0;i<8;i++) + rsxSetViewportClip(context,i,display_width,display_height); + + viewMatrix = Matrix4::lookAt(eye_pos,eye_dir,up_vec); + + mesh = cube; + rotX = Matrix4::rotationX(DEGTORAD(rotx)); + rotY = Matrix4::rotationY(DEGTORAD(roty)); + modelMatrix = rotX*rotY; + modelMatrixIT = Matrix4::identity();// inverse(modelMatrix); + modelViewMatrix = transpose(viewMatrix*modelMatrix); + + rsxAddressToOffset(&mesh->vertices[0].pos,&offset); + rsxBindVertexArrayAttrib(context,GCM_VERTEX_ATTRIB_POS,0,offset,sizeof(S3DVertex),3,GCM_VERTEX_DATA_TYPE_F32,GCM_LOCATION_RSX); + + rsxAddressToOffset(&mesh->vertices[0].nrm,&offset); + rsxBindVertexArrayAttrib(context,GCM_VERTEX_ATTRIB_NORMAL,0,offset,sizeof(S3DVertex),3,GCM_VERTEX_DATA_TYPE_F32,GCM_LOCATION_RSX); + + rsxAddressToOffset(&mesh->vertices[0].u,&offset); + rsxBindVertexArrayAttrib(context,GCM_VERTEX_ATTRIB_TEX0,0,offset,sizeof(S3DVertex),2,GCM_VERTEX_DATA_TYPE_F32,GCM_LOCATION_RSX); + + rsxLoadVertexProgram(context,vpo,vp_ucode); + rsxSetVertexProgramParameter(context,vpo,projMatrix,(float*)&P); + rsxSetVertexProgramParameter(context,vpo,mvMatrix,(float*)&modelViewMatrix); + rsxLoadFragmentProgramLocation(context,fpo,fp_offset,GCM_LOCATION_RSX); + + rsxSetUserClipPlaneControl(context,GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE); + + rsxAddressToOffset(&mesh->indices[0],&offset); + rsxDrawIndexArray(context,GCM_TYPE_TRIANGLES,offset,mesh->cnt_indices,GCM_INDEX_TYPE_16B,GCM_LOCATION_RSX); + +} + +int main(int argc,const char *argv[]) +{ + padInfo padinfo; + padData paddata; + + if (sysModuleLoad(SYSMODULE_PNGDEC) != 0) exit(0); + + png = new pngData; + pngLoadFromBuffer(Stone_Texture_png_bin, Stone_Texture_png_bin_size, png); + + void *host_addr = memalign(HOST_ADDR_ALIGNMENT,HOSTBUFFER_SIZE); + + printf("rsxtest started...\n"); + + init_screen(host_addr,HOSTBUFFER_SIZE); + ioPadInit(7); + init_shader(); + init_texture(); + + DebugFont::init(); + DebugFont::setScreenRes(display_width, display_height); + + cube = createCube(5.0f); + + atexit(program_exit_callback); + sysUtilRegisterCallback(0,sysutil_exit_callback,NULL); + + P = transpose(Matrix4::perspective(DEGTORAD(45.0f),aspect_ratio,1.0f,3000.0f)); + + setDrawEnv(); + setRenderTarget(curr_fb); + + running = 1; + while(running) { + sysUtilCheckCallback(); + + ioPadGetInfo(&padinfo); + for(int i=0; i < MAX_PADS; i++){ + if(padinfo.status[i]){ + ioPadGetData(i, &paddata); + + if (paddata.BTN_DOWN) { + rotx += 0.5f; + } + if (paddata.BTN_UP) { + rotx -= 0.5f; + } + if (rotx >= 360.0f || rotx <= 0.0f) rotx = fmodf(rotx, 360.0f); + if (paddata.BTN_RIGHT) { + roty += 0.5f; + } + if (paddata.BTN_LEFT) { + roty -= 0.5f; + } + if (roty >= 360.0f || roty <= 0.0f) roty = fmodf(roty, 360.0f); + if (paddata.BTN_CROSS) + texture_buffer_idx++; + if (texture_buffer_idx == 3) + texture_buffer_idx = 0; + if(paddata.BTN_CIRCLE) + goto done; + } + + } + + drawFrame(); + int ypos = 10; + int xpos = 10; + DebugFont::setPosition(xpos, ypos); + DebugFont::setColor(1.0f, 1.0f, 1.0f, 1.0f); + + DebugFont::print("Left/Right Pad to Left/Right rotation"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("Up/Down Pad to Up/Down rotation"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("CROSS Button to change texture"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("CIRCLE Button to exit"); + + flip(); + } + +done: + printf("rsxtest done...\n"); + DebugFont::shutdown(); + program_exit_callback(); + return 0; +} diff --git a/samples/graphics/rsx_Basic_Cube/source/perlin.cpp b/samples/graphics/rsx_Basic_Cube/source/perlin.cpp new file mode 100644 index 00000000..14ec05ad --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/source/perlin.cpp @@ -0,0 +1,68 @@ +#include + +static int SEED = 0; + +static int hash[] = { 208,34,231,213,32,248,233,56,161,78,24,140,71,48,140,254,245,255,247,247,40, + 185,248,251,245,28,124,204,204,76,36,1,107,28,234,163,202,224,245,128,167,204, + 9,92,217,54,239,174,173,102,193,189,190,121,100,108,167,44,43,77,180,204,8,81, + 70,223,11,38,24,254,210,210,177,32,81,195,243,125,8,169,112,32,97,53,195,13, + 203,9,47,104,125,117,114,124,165,203,181,235,193,206,70,180,174,0,167,181,41, + 164,30,116,127,198,245,146,87,224,149,206,57,4,192,210,65,210,129,240,178,105, + 228,108,245,148,140,40,35,195,38,58,65,207,215,253,65,85,208,76,62,3,237,55,89, + 232,50,217,64,244,157,199,121,252,90,17,212,203,149,152,140,187,234,177,73,174, + 193,100,192,143,97,53,145,135,19,103,13,90,135,151,199,91,239,247,33,39,145, + 101,120,99,3,186,86,99,41,237,203,111,79,220,135,158,42,30,154,120,67,87,167, + 135,176,183,191,253,115,184,21,233,58,129,233,142,39,128,211,118,137,139,255, + 114,20,218,113,154,27,127,246,250,1,8,198,250,209,92,222,173,21,88,102,219 }; + +int noise2(int x, int y) +{ + int tmp = hash[(y + SEED) % 256]; + return hash[(tmp + x) % 256]; +} + +float lin_inter(float x, float y, float s) +{ + return x + s * (y - x); +} + +float smooth_inter(float x, float y, float s) +{ + return lin_inter(x, y, s * s * (3 - 2 * s)); +} + +float noise2d(float x, float y) +{ + int x_int = x; + int y_int = y; + float x_frac = x - x_int; + float y_frac = y - y_int; + int s = noise2(x_int, y_int); + int t = noise2(x_int + 1, y_int); + int u = noise2(x_int, y_int + 1); + int v = noise2(x_int + 1, y_int + 1); + float low = smooth_inter(s, t, x_frac); + float high = smooth_inter(u, v, x_frac); + return smooth_inter(low, high, y_frac); +} + +float perlin2d(float x, float y, float freq, int depth) +{ + float xa = x * freq; + float ya = y * freq; + float amp = 1.0; + float fin = 0; + float div = 0.0; + + int i; + for (i = 0; i < depth; i++) + { + div += 256 * amp; + fin += noise2d(xa, ya) * amp; + amp /= 2; + xa *= 2; + ya *= 2; + } + + return fin / div; +} \ No newline at end of file diff --git a/samples/graphics/rsx_Basic_Cube/source/rsxutil.cpp b/samples/graphics/rsx_Basic_Cube/source/rsxutil.cpp new file mode 100644 index 00000000..4319d8e6 --- /dev/null +++ b/samples/graphics/rsx_Basic_Cube/source/rsxutil.cpp @@ -0,0 +1,207 @@ +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "rsxutil.h" + +#define GCM_LABEL_INDEX 255 + +videoResolution vResolution; +gcmContextData *context = NULL; + +u32 curr_fb = 0; +u32 first_fb = 1; + +u32 display_width; +u32 display_height; + +u32 depth_pitch; +u32 depth_offset; +u32 *depth_buffer; + +u32 color_pitch; +u32 color_offset[FRAME_BUFFER_COUNT]; +u32 *color_buffer[FRAME_BUFFER_COUNT]; + +f32 aspect_ratio; + +static u32 sResolutionIds[] = { + VIDEO_RESOLUTION_1080, + VIDEO_RESOLUTION_720, + VIDEO_RESOLUTION_480, + VIDEO_RESOLUTION_576 +}; +static size_t RESOLUTION_ID_COUNT = sizeof(sResolutionIds)/sizeof(u32); + +static u32 sLabelVal = 1; + +static RSXDebugFontRenderer *debugFontRenderer; + +static void waitFinish() +{ + rsxSetWriteBackendLabel(context,GCM_LABEL_INDEX,sLabelVal); + + rsxFlushBuffer(context); + + while(*(vu32*)gcmGetLabelAddress(GCM_LABEL_INDEX)!=sLabelVal) + usleep(30); + + ++sLabelVal; +} + +static void waitRSXIdle() +{ + rsxSetWriteBackendLabel(context,GCM_LABEL_INDEX,sLabelVal); + rsxSetWaitLabel(context,GCM_LABEL_INDEX,sLabelVal); + + ++sLabelVal; + + waitFinish(); +} + +void initVideoConfiguration() +{ + s32 rval = 0; + s32 resId = 0; + + for (size_t i=0;i < RESOLUTION_ID_COUNT;i++) { + rval = videoGetResolutionAvailability(VIDEO_PRIMARY, sResolutionIds[i], VIDEO_ASPECT_AUTO, 0); + if (rval != 1) continue; + + resId = sResolutionIds[i]; + rval = videoGetResolution(resId, &vResolution); + if(!rval) break; + } + + if(rval) { + printf("Error: videoGetResolutionAvailability failed. No usable resolution.\n"); + exit(1); + } + + videoConfiguration config = { + (u8)resId, + VIDEO_BUFFER_FORMAT_XRGB, + VIDEO_ASPECT_AUTO, + {0,0,0,0,0,0,0,0,0}, + (u32)vResolution.width*4 + }; + + rval = videoConfigure(VIDEO_PRIMARY, &config, NULL, 0); + if(rval) { + printf("Error: videoConfigure failed.\n"); + exit(1); + } + + videoState state; + + rval = videoGetState(VIDEO_PRIMARY, 0, &state); + switch(state.displayMode.aspect) { + case VIDEO_ASPECT_4_3: + aspect_ratio = 4.0f/3.0f; + break; + case VIDEO_ASPECT_16_9: + aspect_ratio = 16.0f/9.0f; + break; + default: + printf("unknown aspect ratio %x\n", state.displayMode.aspect); + aspect_ratio = 16.0f/9.0f; + break; + } + + display_height = vResolution.height; + display_width = vResolution.width; +} + +void setRenderTarget(u32 index) +{ + gcmSurface sf; + + sf.colorFormat = GCM_SURFACE_X8R8G8B8; + sf.colorTarget = GCM_SURFACE_TARGET_0; + sf.colorLocation[0] = GCM_LOCATION_RSX; + sf.colorOffset[0] = color_offset[index]; + sf.colorPitch[0] = color_pitch; + + sf.colorLocation[1] = GCM_LOCATION_RSX; + sf.colorLocation[2] = GCM_LOCATION_RSX; + sf.colorLocation[3] = GCM_LOCATION_RSX; + sf.colorOffset[1] = 0; + sf.colorOffset[2] = 0; + sf.colorOffset[3] = 0; + sf.colorPitch[1] = 64; + sf.colorPitch[2] = 64; + sf.colorPitch[3] = 64; + + sf.depthFormat = GCM_SURFACE_ZETA_Z24S8; + sf.depthLocation = GCM_LOCATION_RSX; + sf.depthOffset = depth_offset; + sf.depthPitch = depth_pitch; + + sf.type = GCM_SURFACE_TYPE_LINEAR; + sf.antiAlias = GCM_SURFACE_CENTER_1; + + sf.width = display_width; + sf.height = display_height; + sf.x = 0; + sf.y = 0; + + rsxSetSurface(context,&sf); +} + +void init_screen(void *host_addr,u32 size) +{ + u32 zs_depth = 4; + u32 color_depth = 4; + + rsxInit(&context,DEFUALT_CB_SIZE,size,host_addr); + + initVideoConfiguration(); + + waitRSXIdle(); + + gcmSetFlipMode(GCM_FLIP_VSYNC); + + color_pitch = display_width*color_depth; + depth_pitch = display_width*zs_depth; + + for (u32 i=0;i < FRAME_BUFFER_COUNT;i++) { + color_buffer[i] = (u32*)rsxMemalign(64,(display_height*color_pitch)); + rsxAddressToOffset(color_buffer[i],&color_offset[i]); + gcmSetDisplayBuffer(i,color_offset[i],color_pitch,display_width,display_height); + } + + depth_buffer = (u32*)rsxMemalign(64, display_height*depth_pitch); + rsxAddressToOffset(depth_buffer,&depth_offset); + + debugFontRenderer = new RSXDebugFontRenderer(context); +} + +void waitflip() +{ + while(gcmGetFlipStatus()!=0) + usleep(200); + gcmResetFlipStatus(); +} + +void flip() +{ + if(!first_fb) waitflip(); + else gcmResetFlipStatus(); + + gcmSetFlip(context,curr_fb); + rsxFlushBuffer(context); + + gcmSetWaitFlip(context); + + curr_fb ^= 1; + setRenderTarget(curr_fb); + + first_fb = 0; +} diff --git a/samples/graphics/rsx_Basic_Wallpaper/Makefile b/samples/graphics/rsx_Basic_Wallpaper/Makefile new file mode 100644 index 00000000..c76ea9e9 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/Makefile @@ -0,0 +1,164 @@ +#--------------------------------------------------------------------------------- +# Clear the implicit built in rules +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- +ifeq ($(strip $(PSL1GHT)),) +$(error "Please set PSL1GHT in your environment. export PSL1GHT=") +endif + +include $(PSL1GHT)/ppu_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# INCLUDES is a list of directories containing extra header files +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source ../debugfont_renderer/source +DATA := data +SHADERS := shaders ../debugfont_renderer/shaders +INCLUDES := include ../debugfont_renderer/include + +TITLE := RSX Test - PSL1GHT +APPID := RSX00003 +CONTENTID := UP0001-$(APPID)_00-0000000000000000 + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- + +CFLAGS = -Wall -mcpu=cell $(MACHDEP) $(INCLUDE) +CXXFLAGS = $(CFLAGS) + +LDFLAGS = $(MACHDEP) -Wl,-Map,$(notdir $@).map + +#--------------------------------------------------------------------------------- +# any extra libraries we wish to link with the project +#--------------------------------------------------------------------------------- +LIBS := -lsimdmath -lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm -lsysmodule -lpngdec + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \ + $(foreach dir,$(SHADERS),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +export BUILDDIR := $(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# automatically build a list of object files for our project +#--------------------------------------------------------------------------------- +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) +VCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.vcg))) +FCGFILES := $(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.fcg))) + +VPOFILES := $(VCGFILES:.vcg=.vpo) +FPOFILES := $(FCGFILES:.fcg=.fpo) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) + export LD := $(CC) +else + export LD := $(CXX) +endif + +export OFILES := $(addsuffix .o,$(BINFILES)) \ + $(addsuffix .o,$(VPOFILES)) \ + $(addsuffix .o,$(FPOFILES)) \ + $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \ + $(sFILES:.s=.o) $(SFILES:.S=.o) + +#--------------------------------------------------------------------------------- +# build a list of include paths +#--------------------------------------------------------------------------------- +export INCLUDE := $(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + $(LIBPSL1GHT_INC) \ + -I$(CURDIR)/$(BUILD) + +#--------------------------------------------------------------------------------- +# build a list of library paths +#--------------------------------------------------------------------------------- +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ + $(LIBPSL1GHT_LIB) + +export OUTPUT := $(CURDIR)/$(TARGET) +.PHONY: $(BUILD) clean + +#--------------------------------------------------------------------------------- +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).fake.self + +#--------------------------------------------------------------------------------- +run: + ps3load $(OUTPUT).self + +#--------------------------------------------------------------------------------- +pkg: $(BUILD) $(OUTPUT).pkg + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).self: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) + +#--------------------------------------------------------------------------------- +# This rule links in binary data with the .bin extension +#--------------------------------------------------------------------------------- +%.bin.o : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.vpo.o : %.vpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +#--------------------------------------------------------------------------------- +%.fpo.o : %.fpo +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- diff --git a/samples/graphics/rsx_Basic_Wallpaper/Readme.md b/samples/graphics/rsx_Basic_Wallpaper/Readme.md new file mode 100644 index 00000000..45745d77 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/Readme.md @@ -0,0 +1,3 @@ +A basic background wallpaper using vertex, fragment and texture with a scanline shader. + +![RSX basic cube example](rsx_basic_wallpaper.png?raw=true) diff --git a/samples/graphics/rsx_Basic_Wallpaper/include/acid.h b/samples/graphics/rsx_Basic_Wallpaper/include/acid.h new file mode 100644 index 00000000..d1643518 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/include/acid.h @@ -0,0 +1,2939 @@ +/* GIMP RGBA C-Source image dump (acid.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + unsigned char pixel_data[128 * 128 * 4 + 1]; +} acid = { + 128, 128, 4, + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\335\335\335\0\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31" + "\31\0\15\15\15\0\5\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0))" + ")\0===\0UUU\0qqq\0\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\345\345\345\0\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\15\15\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0qqq\0---\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\15\0\0\0" + "\23\0\0\0\30\0\0\0\35\0\0\0!\0\0\0$\0\0\0&\0\0\0(\0\0\0(\0\0\0'\0\0\0$\0" + "\0\0!\0\0\0\35\0\0\0\31\0\0\0\23\0\0\0\15\0\0\0\7\0\0\0\2\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0---\0qqq\0\271\271\271\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\17\0\0\0\30\0\0\0\40\0\0\0+\0\0\0B\0" + "\0\0\\\0\0\0t\0\0\0\211\0\0\0\234\0\0\0\254\0\0\0\271\0\0\0\304\0\0\0\313" + "\0\0\0\313\0\0\0\304\0\0\0\271\0\0\0\254\0\0\0\234\0\0\0\211\0\0\0t\0\0\0" + "\\\0\0\0B\0\0\0+\0\0\0!\0\0\0\30\0\0\0\17\0\0\0\6\0\0\0\1\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\21\21\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\2\0\0\0\14\0\0\0\30\0\0\0&\0\0\0?\0\0\0d\0\0\0\211\0\0\0\254\0\0\0\311" + "\0\0\0\331\0\0\0\341\0\0\0\347\0\0\0\354\0\0\0\361\0\0\0\365\0\0\0\370\0" + "\0\0\373\0\0\0\375\0\0\0\375\0\0\0\373\0\0\0\371\0\0\0\365\0\0\0\361\0\0" + "\0\355\0\0\0\347\0\0\0\341\0\0\0\331\0\0\0\312\0\0\0\254\0\0\0\211\0\0\0" + "d\0\0\0?\0\0\0&\0\0\0\30\0\0\0\15\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" + "\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0QQQ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0\33\0\0" + "\0.\0\0\0Y\0\0\0\211\0\0\0\265\0\0\0\325\0\0\0\343\0\0\0\354\0\0\0\365\0" + "\0\0\374\40!\0\377FH\0\377hk\0\377\206\213\0\377\240\246\0\377\267\275\0" + "\377\311\321\0\377\330\341\0\377\344\354\0\377\344\354\0\377\330\341\0\377" + "\311\321\0\377\267\275\0\377\240\246\0\377\206\213\0\377hk\0\377FH\0\377" + "\40!\0\377\0\0\0\375\0\0\0\365\0\0\0\355\0\0\0\343\0\0\0\326\0\0\0\266\0" + "\0\0\211\0\0\0Z\0\0\0/\0\0\0\33\0\0\0\16\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0QQQ\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\255\255\255\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\11\0\0\0" + "\27\0\0\0-\0\0\0]\0\0\0\224\0\0\0\304\0\0\0\336\0\0\0\354\0\0\0\367\30\31" + "\0\376QT\0\377\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0" + "\376\0\0\0\367\0\0\0\354\0\0\0\337\0\0\0\305\0\0\0\224\0\0\0]\0\0\0-\0\0" + "\0\30\0\0\0\11\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0===\0\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265" + "\0===\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\15\0\0\0!\0\0\0H\0\0\0\204" + "\0\0\0\274\0\0\0\336\0\0\0\357\0\0\0\373BD\0\377\206\213\0\377\306\315\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\306\315\0\377\206\213\0\377BD\0\377\0\0\0\373" + "\0\0\0\357\0\0\0\337\0\0\0\275\0\0\0\204\0\0\0I\0\0\0!\0\0\0\15\0\0\0\3\0" + "\0\0\1\0\0\0\0\0\0\0\0===\0\265\265\265\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0QQ" + "Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0'\0\0\0[\0\0\0\236\0\0" + "\0\324\0\0\0\353\0\0\0\371FH\0\377\225\232\0\377\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\340\350\0\377\225\232\0\377FH\0\377\0\0\0\371\0" + "\0\0\353\0\0\0\324\0\0\0\236\0\0\0\\\0\0\0'\0\0\0\17\0\0\0\3\0\0\0\1\0\0" + "\0\0\0\0\0\0QQQ\0\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\16\0\0\0(\0\0\0c\0\0\0\250" + "\0\0\0\332\0\0\0\361$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\361\0\0\0" + "\333\0\0\0\251\0\0\0c\0\0\0(\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0yyy" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0)))\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\13\0\0\0$\0\0\0_" + "\0\0\0\250\0\0\0\334\0\0\0\364BD\0\376\244\252\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0" + "\335\0\0\0\250\0\0\0`\0\0\0%\0\0\0\13\0\0\0\2\0\0\0\1\0\0\0\0)))\0\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\4\0\0\0\34\0\0\0O\0\0\0\234\0\0\0\332\0\0\0\364FH\0\376\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH\0\376\0\0\0\364\0" + "\0\0\332\0\0\0\234\0\0\0P\0\0\0\34\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0qqq\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315" + "\0""555\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\17\0\0\0""0\0\0\0\203\0\0\0\321\0" + "\0\0\360+-\0\375\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377+-\0\375" + "\0\0\0\360\0\0\0\322\0\0\0\203\0\0\0""1\0\0\0\17\0\0\0\3\0\0\0\1\0\0\0\0" + """555\0\315\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\4\0\0\0\40\0\0\0`\0\0\0\262\0\0\0\346\0\0\0\374~\203\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\374\0\0\0\347\0\0\0\263\0\0\0a\0\0\0\40\0\0\0\5\0\0" + "\0\1\0\0\0\0\1\1\1\0\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\14\0\0" + "\0/\0\0\0\207\0\0\0\326\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\311\321\0\377FH\0\376\0\0\0\366\0\0\0\327\0\0\0\207\0\0\0" + """0\0\0\0\14\0\0\0\2\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375" + "\375\375\0UUU\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\30\0\0\0S\0\0\0\252\0\0\0\345" + "\0\0\0\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\374\0\0\0\346" + "\0\0\0\253\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\0UUU\0\375\375\375\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0==" + "=\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\"\0\0\0q\0\0\0\316\0\0\0\363/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\364\0\0\0\316\0\0\0q\0\0\0\"\0\0\0\5\0\0\0\1\0\0\0\0===\0\351\351" + "\351\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\0\0\0\0\1" + "\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\\`\0\377\0\0\0\373\0\0\0\332\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1\0\0" + "\0\1---\0\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\331\331\331\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0""2\0\0\0\225\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\342\0\0\0" + "\226\0\0\0""2\0\0\0\11\0\0\0\1\0\0\0\1%%%\0\331\331\331\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\335\335\335\0%%%\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0?\0\0\0\243\0\0\0\350\2\2\0\375\240\246\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377" + "\2\2\0\375\0\0\0\350\0\0\0\244\0\0\0@\0\0\0\15\0\0\0\2\0\0\0\1%%%\0\335\335" + "\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\0\0\0\0\1\0\0\0\16" + "\0\0\0H\0\0\0\257\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\355\0\0\0\257\0\0\0H\0\0\0" + "\17\0\0\0\2\0\0\0\1---\0\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\375\375\375\0===\0\0\0\0\0\0\0\0\1\0\0\0\15" + "\0\0\0H\0\0\0\264\0\0\0\360\40!\0\376\306\315\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\40!\0\376\0\0\0" + "\360\0\0\0\265\0\0\0I\0\0\0\15\0\0\0\1\0\0\0\1===\0\375\375\375\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\11" + "\0\0\0?\0\0\0\257\0\0\0\360$%\0\376\315\325\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\315\325" + "\0\377$%\0\377\0\0\0\360\0\0\0\257\0\0\0@\0\0\0\11\0\0\0\1\0\0\0\1UUU\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0""2" + "\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\355\0\0\0\244\0\0\0""2\0" + "\0\0\6\0\0\0\1\0\0\0\0uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\235\235\235\0\0\0\0\0\0\0\0\0\0\0" + "\0\4\0\0\0*\0\0\0\225\0\0\0\350\25\25\0\376\306\315\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\25" + "\25\0\376\0\0\0\350\0\0\0\226\0\0\0*\0\0\0\5\0\0\0\1\0\0\0\0\235\235\235" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\315\315\315\0" + "\1\1\1\0\0\0\0\0\0\0\0\3\0\0\0\"\0\0\0\205\0\0\0\342\2\2\0\375\267\275\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\2\2\0\375\0\0\0\342\0\0\0" + "\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\0\315\315\315\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374" + "\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377\13\14\0\377UX\0\377" + "\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\0\0\0\0\14\0\0\0S\0\0\0\316\0\0\0\373\202\207" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\310\317\0\3779<\0\377\0\0\0\3779<\0\377\310\317\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\306\315\0\377!\"\0\377\0\0\0\377\0\0\0\377\4\4\0\377PT\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\316\0\0\0S\0\0\0\14\0\0\0\1\0\0\0\0qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\0\0\0\0\4\0\0\0/\0\0\0\253\0\0\0\364\\`\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377/2\0\377\0\0\0\377\0\0\0\377\0\0\0\377/2\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\20\20\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0" + "\253\0\0\0""0\0\0\0\5\0\0\0\1\0\0\0\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0)))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0" + "\0\207\0\0\0\345/1\0\376\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\207\215\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\357\370\0\377/1\0\376\0\0\0\346" + "\0\0\0\207\0\0\0\40\0\0\0\3\0\0\0\1)))\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0yyy\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0`\0\0\0\326\0\0\0\374\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\5\5\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\374\0\0\0" + "\327\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\0yyy\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321\321\0" + "\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0" + "\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\0\321\321\321\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0" + "\0\0\0\0\0\0\2\0\0\0\34\0\0\0\203\0\0\0\346FH\0\376\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\376" + "\0\0\0\347\0\0\0\204\0\0\0\34\0\0\0\2\0\0\0\1QQQ\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0\0\0\0" + "\0\0\0\12\0\0\0O\0\0\0\321\0\0\0\374\311\321\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321" + "\0\377\0\0\0\374\0\0\0\322\0\0\0P\0\0\0\13\0\0\0\1\0\0\0\0\265\265\265\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0" + "\0%\0\0\0\234\0\0\0\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377~\203\0\377\0\0\0\361\0\0\0\234\0\0\0%\0\0\0\3\0\0\0\1===\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\255\255\255\0\0\0\0\0\0\0\0\0\0\0\0\16\0\0\0_\0" + "\0\0\332+-\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377+-\0\375\0\0\0\332\0\0\0`\0\0\0\17\0\0\0\1\0\0\0\0\255\255" + "\255\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0(\0\0\0\250\0\0\0" + "\363\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\244\252\0\377\0\0\0\364\0\0\0\250\0\0\0)\0\0\0\3\0\0\0\1=" + "==\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0c\0\0\0\334FH" + "\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\17\0\0\0" + "\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'\0\0\0\251\0\0\0\363\267\275" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0" + "(\0\0\0\3\0\0\0\1QQQ\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377BD\0\376\0\0\0\333\0\0\0\\" + "\0\0\0\16\0\0\0\1\0\0\0\0\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0yyy\0\0\0\0\0\0\0\0\2\0\0\0!\0\0\0\235\0\0\0\361\244\252\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\361\0" + "\0\0\236\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\35\35\35\0\0\0\0\0\0\0\0\10\0\0\0H\0\0\0\324$%\0\375\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377$%\0\375\0" + "\0\0\325\0\0\0I\0\0\0\11\0\0\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\0\0\0\0\26\0\0\0\203\0\0\0\353~\203\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203" + "\0\377\0\0\0\353\0\0\0\204\0\0\0\27\0\0\0\1\0\0\0\0\265\265\265\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\325\335\0\377\0\0\0\371\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\336FH\0\376\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0]\0\0\0\16\0\0\0\1\21\21\21\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0\223\0\0\0\357\225\232\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\357\0\0\0\224\0\0\0\33\0" + "\0\0\1\0\0\0\0\271\271\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\340\350\0\377\0\0\0\373\0\0\0\305\0\0\0" + "/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0---\0\0\0\0\0\0\0\0\14\0\0\0Y\0\0\0\336BD\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\337\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\0\0\0\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\203\210\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0" + "\0\0\211\0\0\0\30\0\0\0\1\0\0\0\0\345\345\345\0\377\377\377\0\377\377\377" + "\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\265\0\0\0\367\306\315\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377" + "\0\0\0\367\0\0\0\266\0\0\0&\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377" + "\377\377\0qqq\0\0\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377\377\377\0\377\377" + "\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343QT\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT" + "\0\377\0\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0" + "\15\15\15\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15\15\15\0\377\377\377" + "\0\335\335\335\0\0\0\0\0\0\0\0\0\0\0\0\40\0\0\0\254\0\0\0\365\267\275\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\203\210\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\6\6\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0\0!\0\0\0\1\0\0\0\0\335" + "\335\335\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0+\0\0\0\311\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\210\215\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\7\7\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\344\354\0\377\0\0\0\374\0\0\0\312\0\0\0,\0\0\0\2" + "\0\0\0\1\265\265\265\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0B\0\0\0\331\40" + "!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\237\245\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\20\21\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\40!\0\377\0\0\0" + "\332\0\0\0B\0\0\0\7\0\0\0\1\221\221\221\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0" + "\0\0\341FH\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\37702\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\37702\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377!\"\0\377\0\0" + "\0\377\0\0\0\377\4\4\0\377PS\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0\0\0\342\0" + "\0\0]\0\0\0\15\0\0\0\1qqq\0UUU\0\0\0\0\0\0\0\0\23\0\0\0t\0\0\0\347hk\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\3779<\0\377\0" + "\0\0\3779<\0\377\310\317\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\350\361\0\377\254\263\0\377.0\0\377" + "\13\14\0\377UX\0\377\317\327\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0" + "\0\0u\0\0\0\23\0\0\0\1UUU\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206" + "\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===" + "\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0\361\240\246\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246" + "\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0\1)))\0\31\31\31\0\0\0\0\0\0\0\0" + "\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0\15\15\15\0\0\0\0\0\0\0\0$\0\0\0\271\0" + "\0\0\370\311\321\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\311\321\0\377\0\0\0\371\0\0\0\272\0\0\0" + "$\0\0\0\1\15\15\15\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\1\1\1" + "\0\0\0\0\0\0\0\0(\0\0\0\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\313\0\0\0)\0\0\0\1\1\1\1\0\1\1\1\0\0\0\0\0\0\0\0(\0\0\0" + "\313\0\0\0\374\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\344\354\0\377\0\0\0\375\0\0\0\313\0\0" + "\0)\0\0\0\1\1\1\1\0\5\5\5\0\0\0\0\0\0\0\0&\0\0\0\304\0\0\0\373\330\341\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\330\341\0\377\0\0\0\373\0\0\0\305\0\0\0'\0\0\0\1\5\5\5\0\15\15" + "\15\0\0\0\0\0\0\0\0$\0\0\0\271\0\0\0\370\311\321\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\311\321\0" + "\377\0\0\0\371\0\0\0\272\0\0\0$\0\0\0\1\15\15\15\0\31\31\31\0\0\0\0\0\0\0" + "\0\40\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0" + "\0\0\255\0\0\0!\0\0\0\1\31\31\31\0)))\0\0\0\0\0\0\0\0\35\0\0\0\234\0\0\0" + "\361\240\246\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\240\246\0\377\0\0\0\361\0\0\0\235\0\0\0\35\0\0\0" + "\1)))\0===\0\0\0\0\0\0\0\0\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\206" + "\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1===\0UUU\0\0\0\0\0\0\0\0\23" + "\0\0\0t\0\0\0\347hk\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377hk\0\377\0\0\0\350\0\0\0u\0\0\0\23\0\0\0" + "\1UUU\0qqq\0\0\0\0\0\0\0\0\15\0\0\0\\\0\0\0\341FH\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377FH\0\377\0" + "\0\0\342\0\0\0]\0\0\0\15\0\0\0\1qqq\0\221\221\221\0\0\0\0\0\0\0\0\6\0\0\0" + "B\0\0\0\331\40!\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\40!\0\377\0\0\0\332\0\0\0C\0\0\0\7\0\0\0\1\221" + "\221\221\0\265\265\265\0\0\0\0\0\0\0\0\1\0\0\0,\0\0\0\312\0\0\0\374\344\354" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377" + "\0\0\0\375\0\0\0\312\0\0\0,\0\0\0\2\0\0\0\1\265\265\265\0\335\335\335\0\0" + "\0\0\0\0\0\0\1\0\0\0!\0\0\0\254\0\0\0\365\267\275\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\267\275\0\377\0\0\0\365\0\0\0\255\0\0" + "\0\"\0\0\0\1\0\0\0\1\335\335\335\0\377\377\377\0\15\15\15\0\0\0\0\0\0\0\0" + "\30\0\0\0\211\0\0\0\354\206\213\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\15" + "\15\15\0\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\17\0\0\0d\0\0\0\343" + "QT\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377QT\0\377\0" + "\0\0\344\0\0\0e\0\0\0\17\0\0\0\1===\0\377\377\377\0\377\377\377\0qqq\0\0" + "\0\0\0\0\0\0\6\0\0\0?\0\0\0\325\30\31\0\376\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\30\31\0\376\0\0\0\326\0\0\0?\0\0\0\6\0\0\0\1qqq\0\377" + "\377\377\0\377\377\377\0\251\251\251\0\0\0\0\0\0\0\0\1\0\0\0&\0\0\0\266\0" + "\0\0\367\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\335\345\0\377\261\270\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\0\0\0\370" + "\0\0\0\266\0\0\0'\0\0\0\2\0\0\0\1\251\251\251\0\377\377\377\0\377\377\377" + "\0\345\345\345\0\0\0\0\0\0\0\0\1\0\0\0\31\0\0\0\212\0\0\0\354\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\322\332\0\377\36" + "\37\0\377\10\10\0\377\265\273\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\316\326\0\377\230\235\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\206\213\0\377\0\0\0\355\0\0\0\212\0\0\0\31\0\0\0\1\0" + "\0\0\1\345\345\345\0\377\377\377\0\377\377\377\0\377\377\377\0---\0\0\0\0" + "\0\0\0\0\14\0\0\0Z\0\0\0\337BD\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\1\1\0\377\201\206\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0\377\17" + "\20\0\377\2\2\0\377\224\231\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377BD\0\377\0\0\0\340\0\0\0Z\0\0\0" + "\15\0\0\0\1---\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "qqq\0\0\0\0\0\0\0\0\2\0\0\0.\0\0\0\305\0\0\0\372\340\350\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\322\332\0\377\36\37\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377SV\0\377\353\364\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377w{\0\377\1\1\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377;>\0\377<>\0\377<>\0\377\303\312\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\0\0\0\373\0\0\0\305\0\0\0/\0\0\0\3\0\0\0\1qqq\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0\0\0\0\0\0\0\1" + "\0\0\0\33\0\0\0\224\0\0\0\357\225\232\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\26\26\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377.0\0\377" + "\330\340\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\345\355\0\377?A" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\1\1\0\377\310\320\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\225\232\0\377\0\0\0\360\0\0\0" + "\225\0\0\0\34\0\0\0\1\0\0\0\1\271\271\271\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\21\21\21\0\0\0\0\0\0\0\0\15\0\0\0" + "]\0\0\0\337FH\0\376\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\257\266\0\377\4\4\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\16\17\0\377\265\273" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\277\306\0\377\23\24\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\0\377\226\233\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377FH\0\377\0\0\0\337\0\0\0^\0\0\0\16\0\0\0\1\21\21" + "\21\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0aaa\0\0\0\0\0\0\0\0\3\0\0\0-\0\0\0\275\0\0\0\370\325\335" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\300\307\0\377\30\31\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377z\177\0\377\355\366" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377pt\0\377\2\2\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2" + "\0\377\235\243\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\325\335\0\377\0\0\0\371" + "\0\0\0\276\0\0\0-\0\0\0\3\0\0\0\1aaa\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0\0\0\0\0\0" + "\0\0\1\0\0\0\27\0\0\0\204\0\0\0\353~\203\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\330\341\0\377&'\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\25\25\0\377\277\306\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\310\317\0\377" + "-/\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\25\25\0\377\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377~\203\0\377\0\0\0\354\0\0\0\205\0\0\0\30\0\0\0\1\0\0\0\1\265\265" + "\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\35\35\35\0\0\0\0\0\0\0\0\11\0\0\0I\0\0\0\324" + "$%\0\375\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\350\360\0\377EG\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\2\2\0\377mq\0\377\352\363\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\342\352\0" + "\377fi\0\377\2\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377*,\0\377\333\344\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377$%\0\375\0\0\0\325\0\0\0J\0\0\0\11\0\0" + "\0\1\35\35\35\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\2" + "\0\0\0!\0\0\0\236\0\0\0\361\244\252\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377tx\0\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\35\36\0\377\235\243\0" + "\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\356\367\0\377\220" + "\225\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377gj\0\377\353\364\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377\0\0\0\362\0" + "\0\0\237\0\0\0\"\0\0\0\2\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\331\331\331\0\0\0\0\0\0\0\0\1\0\0\0\16\0\0\0\\\0\0\0\333BD\0\375\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\265\273\0" + "\377\13\14\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377-/\0\377\273\302\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355\366\0\377\177\204" + "\0\377\15\16\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\11\12\0\377\246\254\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "BD\0\376\0\0\0\333\0\0\0]\0\0\0\17\0\0\0\1\0\0\0\1\331\331\331\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0'" + "\0\0\0\251\0\0\0\363\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\346\356\0\377HK\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377=?\0\377\247\255\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\344\354\0\377\206\213\0\377" + "\34\35\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377/1\0\377\325\335\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\267\275\0\377\0\0\0\364\0\0\0\251\0\0\0(\0\0\0\3\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271\271\0\0" + "\0\0\0\0\0\0\1\0\0\0\20\0\0\0d\0\0\0\335FH\0\375\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\211\217\0\377\10\11\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\14\15\0\377qu\0\377" + "\343\353\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\356\367\0\377\254\263\0\377hl\0\377\5\5\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\16\17\0\377\231\237\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377FH\0\376\0\0\0\335\0\0\0d\0\0\0\20\0\0\0\1\0\0\0\1\271\271\271" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0)\0\0\0\251\0\0\0\363\244\252\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\346\356\0\377fi\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\4\4\0\377BD\0\377\206\213\0\377\301\310\0\377\354\365\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340\350\0\377\230\235\0" + "\377^b\0\377\25\25\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377Z^" + "\0\377\335\345\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\244\252\0\377" + "\0\0\0\364\0\0\0\251\0\0\0*\0\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255" + "\255\255\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0`\0\0\0\332+-\0\375\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\254\263\0\377\25\25\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\12\13\0\377;>\0\377UX\0" + "\377lp\0\377x|\0\377x|\0\377x|\0\377bf\0\377HK\0\377\6\6\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\37713\0\377\275\304" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "+-\0\375\0\0\0\332\0\0\0a\0\0\0\17\0\0\0\1\0\0\0\1\255\255\255\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0===\0\0\0\0\0\0\0\0\3\0\0\0%\0\0\0\234\0\0\0" + "\360~\203\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357\370" + "\0\377\216\223\0\377\16\17\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + ",.\0\377\247\255\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0\361\0\0\0\235\0\0\0%\0" + "\0\0\3\0\0\0\1===\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265" + "\265\265\0\0\0\0\0\0\0\0\1\0\0\0\13\0\0\0P\0\0\0\322\0\0\0\374\311\321\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\355" + "\366\0\377\213\221\0\377\17\20\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\37724\0\377\246\254\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\311\321\0\377\0\0\0\374\0\0\0\323\0\0\0Q\0\0\0\14\0\0\0\1\0\0\0\1" + "\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0QQQ\0\0\0\0\0\0\0\0\2\0\0\0\34\0\0\0\204\0\0\0\347FH\0\376\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\356\367\0\377\235\243\0\377(*\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\5\0" + "\377hl\0\377\270\276\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377FH\0\377\0\0\0\347\0\0\0\204\0\0\0\35\0\0\0\2\0\0\0\1QQQ\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\321\321" + "\321\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""1\0\0\0\263\0\0\0\365\206\213\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\320\330\0\377\\`\0\377\7" + "\7\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\3778:\0\377\226\233\0" + "\377\344\354\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\206\213\0\377\0\0\0\366\0\0\0\263\0\0\0""1\0\0\0\5\0\0\0\1\0\0\0\1" + "\321\321\321\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0\0\1\0\0\0\17\0\0\0a\0\0\0" + "\327\0\0\0\374\276\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\357\370\0\377\245\253\0\377w{\0\377:=\0\377\3\3\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377*,\0\377dh\0\377\217\224\0\377\350" + "\361\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\276\305\0\377\0\0\0\375\0\0\0\330\0\0\0b\0\0" + "\0\20\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + ")))\0\0\0\0\0\0\0\0\3\0\0\0\40\0\0\0\207\0\0\0\346/1\0\376\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\357\370\0\377\305\314\0\377\247\255\0\377" + "\212\220\0\377x}\0\377x}\0\377x}\0\377x}\0\377{\200\0\377\240\246\0\377\270" + "\276\0\377\357\370\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\357\370\0\377/1\0\376\0\0\0\347\0\0\0\210\0\0\0!\0\0\0\3\0\0\0" + "\1)))\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265" + "\265\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0""0\0\0\0\253\0\0\0\364\\`\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\\`\0\377\0\0\0\364\0\0\0\254\0\0\0""1" + "\0\0\0\6\0\0\0\1\0\0\0\1\265\265\265\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0\0\0\1\0\0\0\14\0\0" + "\0T\0\0\0\317\0\0\0\373\202\207\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\202\207\0\377\0\0\0\373" + "\0\0\0\317\0\0\0T\0\0\0\15\0\0\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0""555\0\0\0\0\0\0\0\0\2\0\0\0\30\0\0\0q\0\0\0\332\0\0\0\374\240\246\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\240\246\0\377\0" + "\0\0\374\0\0\0\333\0\0\0r\0\0\0\31\0\0\0\2\0\0\0\1""555\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\315\315\315\0\1\1\1\0\0\0\0\1\0\0\0\4\0\0\0\"\0" + "\0\0\205\0\0\0\342\2\2\0\375\267\275\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267" + "\275\0\377\2\2\0\375\0\0\0\342\0\0\0\206\0\0\0#\0\0\0\4\0\0\0\1\1\1\1\1\315" + "\315\315\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\235\235" + "\235\0\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0+\0\0\0\226\0\0\0\350\25\25\0\376\306" + "\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\306\315\0\377\25\25\0\376\0\0\0\351\0\0\0\226\0\0\0+\0\0\0\6\0" + "\0\0\1\0\0\0\1\235\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0" + """2\0\0\0\244\0\0\0\355\40!\0\376\315\325\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377\40!\0\376\0\0\0\356\0\0\0\245\0\0\0""3\0" + "\0\0\7\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0UUU\0\0" + "\0\0\0\0\0\0\1\0\0\0\11\0\0\0@\0\0\0\260\0\0\0\360$%\0\376\315\325\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\315\325\0\377$%\0\377\0\0\0\361\0\0\0\260\0\0\0A\0\0\0" + "\12\0\0\0\1\0\0\0\1UUU\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\375\375\375\0===\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0H\0\0\0\264\0\0\0\360" + "\40!\0\376\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\306\315\0\377\40!\0\376\0\0\0\361\0\0\0\265\0\0\0I\0\0\0\16" + "\0\0\0\2\0\0\0\1===\1\375\375\375\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\351\351\351\0---\0\0\0\0\1\0\0\0\2\0\0\0\17" + "\0\0\0I\0\0\0\260\0\0\0\355\25\25\0\376\267\275\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\267\275\0\377\25\25\0\376\0\0\0\356\0\0\0\260\0\0\0I\0\0\0" + "\20\0\0\0\2\0\0\0\1---\1\351\351\351\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "%%%\0\0\0\0\1\0\0\0\2\0\0\0\16\0\0\0@\0\0\0\244\0\0\0\350\2\2\0\375\240\246" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\240\246\0\377\2\2\0\375\0\0\0\351\0\0\0\245\0\0\0@\0\0\0\16" + "\0\0\0\2\0\0\0\1%%%\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\331\331\331\0%%%\0\0\0\0\1\0\0\0\2\0\0\0\12\0\0\0""2\0\0\0\226" + "\0\0\0\342\0\0\0\374\202\207\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\202\207\0\377\0\0\0\374\0\0\0\343\0\0\0\226\0\0\0""3\0\0\0" + "\12\0\0\0\2\0\0\0\1%%%\1\331\331\331\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0---\0\0\0\0\1\0\0" + "\0\1\0\0\0\6\0\0\0*\0\0\0\205\0\0\0\332\0\0\0\373\\`\0\377\357\370\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\357" + "\370\0\377\\`\0\377\0\0\0\373\0\0\0\333\0\0\0\206\0\0\0+\0\0\0\6\0\0\0\1" + "\0\0\0\1---\1\335\335\335\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\351\351\351\0" + "===\0\0\0\0\1\0\0\0\1\0\0\0\5\0\0\0#\0\0\0r\0\0\0\317\0\0\0\364/1\0\376\276" + "\305\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\276\305\0\377/1\0\376" + "\0\0\0\365\0\0\0\317\0\0\0r\0\0\0#\0\0\0\6\0\0\0\1\0\0\0\1===\1\351\351\351" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\375\375\375" + "\0UUU\0\0\0\0\0\0\0\0\1\0\0\0\4\0\0\0\31\0\0\0S\0\0\0\253\0\0\0\346\0\0\0" + "\374\206\213\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\206\213\0\377\0\0\0\375\0\0\0\347\0\0\0" + "\254\0\0\0T\0\0\0\31\0\0\0\4\0\0\0\1\0\0\0\1UUU\0\375\375\375\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0uuu\0\0\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0/\0\0\0\210\0" + "\0\0\327\0\0\0\366FH\0\376\311\321\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\311\321\0\377FH\0\377\0\0\0\367\0\0\0\330\0\0\0\210\0\0\0""0\0\0\0\15\0" + "\0\0\3\0\0\0\1\0\0\0\1uuu\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\235\235\235\0\1\1\1\0\0\0\0\1\0\0\0\1\0\0\0\5\0" + "\0\0!\0\0\0a\0\0\0\263\0\0\0\347\0\0\0\374~\203\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377~\203\0\377\0\0\0" + "\374\0\0\0\347\0\0\0\264\0\0\0b\0\0\0!\0\0\0\6\0\0\0\1\0\0\0\1\1\1\1\1\235" + "\235\235\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\315\315\315\0""555\0\0\0\0\0\0\0\0\1\0" + "\0\0\3\0\0\0\17\0\0\0""1\0\0\0\204\0\0\0\322\0\0\0\361+-\0\375\244\252\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\244\252\0\377+-\0\375\0\0\0\361\0\0\0\323\0\0\0" + "\204\0\0\0""1\0\0\0\20\0\0\0\3\0\0\0\1\0\0\0\1""555\0\315\315\315\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0qqq\0\0\0\0\0\0" + "\0\0\1\0\0\0\1\0\0\0\5\0\0\0\34\0\0\0P\0\0\0\234\0\0\0\332\0\0\0\364FH\0" + "\376\267\275\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\267\275\0\377FH" + "\0\376\0\0\0\364\0\0\0\333\0\0\0\235\0\0\0Q\0\0\0\35\0\0\0\5\0\0\0\1\0\0" + "\0\1\0\0\0\1qqq\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\265\265\265\0)))\0\0" + "\0\0\0\0\0\0\1\0\0\0\3\0\0\0\14\0\0\0%\0\0\0`\0\0\0\251\0\0\0\335\0\0\0\364" + "BD\0\376\244\252\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\244\252\0\377BD\0\376\0\0\0\364\0\0\0\336\0\0\0\251\0\0\0a\0\0\0&" + "\0\0\0\14\0\0\0\3\0\0\0\1\0\0\0\1)))\0\265\265\265\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0yyy\0\0\0\0\0\0\0" + "\0\1\0\0\0\1\0\0\0\3\0\0\0\17\0\0\0)\0\0\0d\0\0\0\251\0\0\0\333\0\0\0\362" + "$%\0\375~\203\0\377\325\335\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\325\335\0\377~\203\0\377$%\0\375\0\0\0\362\0\0\0\334\0\0\0\252\0\0\0" + "d\0\0\0)\0\0\0\17\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1yyy\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\321\321\321\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1\0" + "\0\0\4\0\0\0\20\0\0\0(\0\0\0\\\0\0\0\236\0\0\0\325\0\0\0\354\0\0\0\372FH" + "\0\377\225\232\0\377\340\350\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\340" + "\350\0\377\225\232\0\377FH\0\377\0\0\0\372\0\0\0\354\0\0\0\325\0\0\0\236" + "\0\0\0]\0\0\0(\0\0\0\20\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\321\321\321" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\265\265\265\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\3\0\0\0" + "\16\0\0\0\"\0\0\0I\0\0\0\205\0\0\0\275\0\0\0\337\0\0\0\360\0\0\0\374BD\0" + "\377\206\213\0\377\306\315\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\306\315\0\377\206" + "\213\0\377BD\0\377\0\0\0\374\0\0\0\360\0\0\0\340\0\0\0\276\0\0\0\205\0\0" + "\0J\0\0\0\"\0\0\0\16\0\0\0\4\0\0\0\1\0\0\0\1\0\0\0\1===\0\265\265\265\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\255\255" + "\255\0===\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\11\0\0\0\27\0\0\0-\0\0" + "\0]\0\0\0\225\0\0\0\305\0\0\0\337\0\0\0\355\0\0\0\370\30\31\0\376QT\0\377" + "\206\213\0\377\267\275\0\377\344\354\0\377\360\371\0\377\360\371\0\377\360" + "\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371" + "\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0" + "\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377\360\371\0\377" + "\344\354\0\377\267\275\0\377\206\213\0\377QT\0\377\30\31\0\376\0\0\0\370" + "\0\0\0\355\0\0\0\340\0\0\0\306\0\0\0\225\0\0\0^\0\0\0-\0\0\0\30\0\0\0\11" + "\0\0\0\3\0\0\0\1\0\0\0\1\0\0\0\1===\0\255\255\255\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\271\271\271\0QQQ\0\0\0\0\0\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\3\0\0\0\16\0\0\0\33\0\0\0/\0\0\0Z\0\0\0\212\0\0\0\266\0\0" + "\0\326\0\0\0\344\0\0\0\355\0\0\0\365\0\0\0\374\40!\0\377FH\0\377hk\0\377" + "\206\213\0\377\240\246\0\377\267\275\0\377\311\321\0\377\330\341\0\377\344" + "\354\0\377\344\354\0\377\330\341\0\377\311\321\0\377\267\275\0\377\240\246" + "\0\377\206\213\0\377hk\0\377FH\0\377\40!\0\377\0\0\0\375\0\0\0\366\0\0\0" + "\355\0\0\0\344\0\0\0\326\0\0\0\266\0\0\0\212\0\0\0Z\0\0\0/\0\0\0\33\0\0\0" + "\16\0\0\0\4\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1QQQ\0\271\271\271\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\331\331\331\0yyy\0\35\35\35\0\0\0\0\0\0\0\0\1\0" + "\0\0\1\0\0\0\1\0\0\0\3\0\0\0\15\0\0\0\31\0\0\0'\0\0\0@\0\0\0e\0\0\0\212\0" + "\0\0\255\0\0\0\312\0\0\0\332\0\0\0\342\0\0\0\350\0\0\0\355\0\0\0\361\0\0" + "\0\365\0\0\0\371\0\0\0\373\0\0\0\375\0\0\0\375\0\0\0\374\0\0\0\371\0\0\0" + "\366\0\0\0\362\0\0\0\355\0\0\0\350\0\0\0\342\0\0\0\332\0\0\0\313\0\0\0\255" + "\0\0\0\212\0\0\0e\0\0\0@\0\0\0'\0\0\0\31\0\0\0\16\0\0\0\4\0\0\0\2\0\0\0\1" + "\0\0\0\1\0\0\0\1\35\35\35\0yyy\0\331\331\331\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\265\265\265\0aaa\0\21\21\21\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0" + "\0\2\0\0\0\6\0\0\0\17\0\0\0\31\0\0\0!\0\0\0,\0\0\0C\0\0\0]\0\0\0u\0\0\0\212" + "\0\0\0\235\0\0\0\255\0\0\0\272\0\0\0\305\0\0\0\314\0\0\0\314\0\0\0\305\0" + "\0\0\272\0\0\0\255\0\0\0\235\0\0\0\212\0\0\0u\0\0\0]\0\0\0C\0\0\0,\0\0\0" + "\"\0\0\0\31\0\0\0\20\0\0\0\7\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\21\21" + "\21\0aaa\0\265\265\265\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\271\271" + "\271\0qqq\0---\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\2" + "\0\0\0\7\0\0\0\15\0\0\0\23\0\0\0\31\0\0\0\35\0\0\0!\0\0\0$\0\0\0'\0\0\0)" + "\0\0\0)\0\0\0'\0\0\0%\0\0\0!\0\0\0\36\0\0\0\31\0\0\0\24\0\0\0\16\0\0\0\10" + "\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1---\0qqq\0\271\271" + "\271\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\345\345\345\0" + "\251\251\251\0qqq\0===\0\15\15\15\0\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0" + "\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\15\15" + "\15\0===\0qqq\0\251\251\251\0\345\345\345\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\335\335\335\0" + "\265\265\265\0\221\221\221\0qqq\0UUU\0===\0)))\0\31\31\31\0\15\15\15\0\5" + "\5\5\0\1\1\1\0\1\1\1\0\5\5\5\0\15\15\15\0\31\31\31\0)))\0===\0UUU\0qqq\0" + "\221\221\221\0\265\265\265\0\335\335\335\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" + "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" + "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" + "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" + "\377\0\377\377\377\0\377\377\377\0\377\377\377\0", +}; + diff --git a/samples/graphics/rsx_Basic_Wallpaper/include/geometry.h b/samples/graphics/rsx_Basic_Wallpaper/include/geometry.h new file mode 100644 index 00000000..8be11b93 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/include/geometry.h @@ -0,0 +1,12 @@ +#ifndef __GEOMETRY_H__ +#define __GEOMETRY_H__ + +#include "mesh.h" + +SMeshBuffer* createCube(f32 size); +SMeshBuffer* createDonut(f32 outerRadius,f32 innerRadius,u32 polyCntX,u32 polyCntY); +SMeshBuffer* createSphere(f32 radius,u32 polyCntX,u32 polyCntY); +SMeshBuffer* createQuad(f32 size, float z); +SMeshBuffer* createQuad(Point3 P1, Point3 P2, Point3 P3, Point3 P4); + +#endif diff --git a/samples/graphics/rsx_Basic_Wallpaper/include/irrallocator.h b/samples/graphics/rsx_Basic_Wallpaper/include/irrallocator.h new file mode 100644 index 00000000..47feeab2 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/include/irrallocator.h @@ -0,0 +1,73 @@ +#ifndef __IRRALLOCATOR_H__ +#define __IRRALLOCATOR_H__ + +#include + +namespace irr +{ + namespace core + { + template< typename T > + class allocator + { + public: + T* allocate(u32 cnt) + { + return (T*)operator new(cnt*sizeof(T)); + } + + void deallocate(T *ptr) + { + operator delete(ptr); + } + + void construct(T *ptr,const T& elem) + { + new ((void*)ptr) T(elem); + } + + void destruct(T *ptr) + { + ptr->~T(); + } + }; + + template< typename T > + class allocatorRSX + { + public: + T* allocate(u32 cnt) + { + return (T*)operator new(cnt*sizeof(T)); + } + + void deallocate(T *ptr) + { + operator delete(ptr); + } + + void construct(T *ptr,const T& elem) + { + new ((void*)ptr) T(elem); + } + + void destruct(T *ptr) + { + ptr->~T(); + } + + protected: + void* operator new(size_t size) + { + return rsxMemalign(64,size); + } + + void operator delete(void *ptr) + { + rsxFree(ptr); + } + }; + } +} + +#endif diff --git a/samples/graphics/rsx_Basic_Wallpaper/include/irrarray.h b/samples/graphics/rsx_Basic_Wallpaper/include/irrarray.h new file mode 100644 index 00000000..e9c98f0d --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/include/irrarray.h @@ -0,0 +1,162 @@ +#ifndef __IRRARRAY_H__ +#define __IRRARRAY_H__ + +#include "irrallocator.h" + +namespace irr +{ + namespace core + { + template< class T, typename TAlloc = allocator > + class array + { + public: + array() : data(NULL),used(0),allocated(0),free_it(true),is_sorted(true) {}; + array(u32 start_cnt) : data(NULL),used(0),allocated(0),free_it(true),is_sorted(true) + { + reallocate(start_cnt); + } + array(const array& other) : data(NULL) + { + *this = other; + } + + ~array() + { + u32 i; + + if(free_it==true) { + for(i=0;iallocated) { + T e(elem); + u32 newAlloc; + + newAlloc = used + 1 + (allocated<500 ? (allocated<5 ? 5 : used) : used>>2); + + reallocate(newAlloc); + allocator.construct(&data[used++],e); + } else + allocator.construct(&data[used++],elem); + + is_sorted = false; + } + + void push_front(const T& elem) + { + insert(elem); + } + + void insert(const T& elem,u32 index = 0) + { + u32 i; + + if(index>used) return; + if((used + 1)>allocated) reallocate(used + 1); + + for(i=used;i>index;i--) { + if(iindex) allocator.destruct(&data[index]); + + allocator.construct(&data[index],elem); + is_sorted = false; + used++; + } + + void erase(u32 index) + { + u32 i; + + for(i=index+1;iused) reallocate(new_cnt); + used = new_cnt; + } + + void clear() + { + u32 i; + + for(i=0;i + +using namespace Vectormath::Aos; + +template< class T > +inline const T& min_(const T& a,const T& b) +{ + return a +inline const T& max_(const T& a,const T& b) +{ + return a +inline const T clamp(const T& val,const T& low,const T& high) +{ + return min_(max_(val,low),high); +} + +struct S3DVertex +{ + S3DVertex() {}; + S3DVertex(f32 x,f32 y,f32 z,f32 nx,f32 ny,f32 nz,f32 tu,f32 tv, u32 c) + : pos(x, y, z), nrm(nx, ny, nz), u(tu), v(tv), col(c) {}; + + inline S3DVertex& operator=(const S3DVertex& other) + { + pos = other.pos; + nrm = other.nrm; + u = other.u; + v = other.v; + col = other.col; + return *this; + } + + Vector3 pos; + Vector3 nrm; + f32 u, v; + u32 col; +}; + +template< class T > +class CMeshBuffer +{ +public: + CMeshBuffer() : indices(NULL),cnt_indices(0),vertices(NULL),cnt_vertices(0) {}; + + u16 *indices; + u32 cnt_indices; + + S3DVertex *vertices; + u32 cnt_vertices; +}; + +typedef CMeshBuffer SMeshBuffer; + +#endif diff --git a/samples/graphics/rsx_Basic_Wallpaper/include/rsxutil.h b/samples/graphics/rsx_Basic_Wallpaper/include/rsxutil.h new file mode 100644 index 00000000..2d2d3a39 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/include/rsxutil.h @@ -0,0 +1,48 @@ +#ifndef __RSXUTIL_H__ +#define __RSXUTIL_H__ + +#include + +#include + +#define DEFAULT_CB_SIZE 0x80000 // 512Kb default command buffer size +#define HOST_STATE_CB_SIZE 0x10000 // 64Kb state command buffer size (used for resetting certain default states) +#define HOST_ADDR_ALIGNMENT (1024*1024) + +#define GCM_PREPARED_BUFFER_INDEX 65 +#define GCM_BUFFER_STATUS_INDEX 66 +#define GCM_WAIT_LABEL_INDEX 255 + +#define MAX_BUFFER_QUEUE_SIZE 1 + +#define BUFFER_IDLE 0 +#define BUFFER_BUSY 1 + +#define FRAME_BUFFER_COUNT 4 + +extern u32 curr_fb; + +extern u32 display_width; +extern u32 display_height; + +extern u32 depth_pitch; +extern u32 depth_offset; +extern void *depth_buffer; + +extern u32 color_pitch; +extern u32 color_offset[FRAME_BUFFER_COUNT]; +extern void *color_buffer[FRAME_BUFFER_COUNT]; + +extern void *state_buffer; +extern u32 state_offset; + + +extern f32 aspect_ratio; + +void initScreen(u32 hostBufferSize); +void flip(); +void finish(); + +void setRenderTarget(u32 index); + +#endif // __RSXUTIL_H__ diff --git a/samples/graphics/rsx_Basic_Wallpaper/rsx_basic_wallpaper.png b/samples/graphics/rsx_Basic_Wallpaper/rsx_basic_wallpaper.png new file mode 100644 index 00000000..0488089d Binary files /dev/null and b/samples/graphics/rsx_Basic_Wallpaper/rsx_basic_wallpaper.png differ diff --git a/samples/graphics/rsx_Basic_Wallpaper/shaders/diffuse_specular_shader.vcg b/samples/graphics/rsx_Basic_Wallpaper/shaders/diffuse_specular_shader.vcg new file mode 100644 index 00000000..0e2e3570 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/shaders/diffuse_specular_shader.vcg @@ -0,0 +1,16 @@ +void main(float4 position : POSITION, + float4 color : COLOR0, + float2 texcoord : TEXCOORD0, + + uniform float4x4 modelViewProj, + + out float4 oPosition : POSITION, + out float4 oColor : COLOR0, + out float2 oTexCoord : TEXCOORD0 + ) + { + oPosition = mul(modelViewProj, position); + oColor = color; + oTexCoord = texcoord; + } + \ No newline at end of file diff --git a/samples/graphics/rsx_Basic_Wallpaper/shaders/scanlines.fcg b/samples/graphics/rsx_Basic_Wallpaper/shaders/scanlines.fcg new file mode 100644 index 00000000..35bcba34 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/shaders/scanlines.fcg @@ -0,0 +1,44 @@ +void main +( + float4 position : TEXCOORD0, + float3 normal : TEXCOORD1, + float2 texcoord : TEXCOORD0, + + uniform float4 scanline, + uniform sampler2D texture, + + out float4 oColor +) +{ + //Scanline parameters + //------------------------------------------------- + //scanline.x => scanline density, values 100 - 200 + //scanline.y => scanline depth / contrast, values 2 - 10 + //scanline.z => scanline brightnes, value 0 - 1 + //scanline.w => scanline type horizontal (value 1.0f), vertical (value 2.0f), none (val 0.0f) + + float dark = scanline.z; + + //pos Absolute from [0,1] to [-1,1] + float posxAbs = position.x * 2.0 - 1.0; + float posyAbs = position.y * 2.0 - 1.0; + + //vertical scanline + if (scanline.w > 0.19) { + dark += (sin(3.1415926f * posxAbs * scanline.x) / scanline.y); + } + else + //horizontal scanline + if (scanline.w > 0.09) { + dark += (sin(3.1415926f * posyAbs * scanline.x) / scanline.y); + + } + //no scanline + else + dark = 1.0f; + + float4 texel = tex2D(texture,texcoord); + float3 color = texel.xyz * dark; + + oColor = float4(color, texel.w); +} diff --git a/samples/graphics/rsx_Basic_Wallpaper/source/geometry.cpp b/samples/graphics/rsx_Basic_Wallpaper/source/geometry.cpp new file mode 100644 index 00000000..081f6ff8 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/source/geometry.cpp @@ -0,0 +1,302 @@ +#include + +#include "geometry.h" + + +SMeshBuffer* createQuad(Point3 P1, Point3 P2, Point3 P3, Point3 P4) +{ + u32 i; + SColor col(255, 255, 255, 255); + SMeshBuffer* buffer = new SMeshBuffer(); + const u16 u[6] = { 0,1,2, 0,3,1 }; + + buffer->indices.set_used(6); + + for (i = 0; i < 6; i++) buffer->indices[i] = u[i]; + + buffer->vertices.set_used(4); + + // position, normal, texture + buffer->vertices[0] = S3DVertex(P1.getX(), P1.getY(), P1.getZ(), -1, -1, -1, col, 0, 1); + buffer->vertices[1] = S3DVertex(P2.getX(), P2.getY(), P2.getZ(), 1, -1, -1, col, 1, 0); + buffer->vertices[2] = S3DVertex(P3.getX(), P3.getY(), P3.getZ(), 1, 1, -1, col, 0, 0); + buffer->vertices[3] = S3DVertex(P4.getX(), P4.getY(), P4.getZ(), -1, 1, -1, col, 1, 1); + + + rsxAddressToOffset(&buffer->vertices[0].pos, &buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm, &buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col, &buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u, &buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0], &buffer->ind_off); + + return buffer; +} + +SMeshBuffer* createQuad(f32 size, float z) +{ + u32 i; + SColor col(255, 255, 255, 255); + SMeshBuffer* buffer = new SMeshBuffer(); + const u16 u[6] = { 0,1,2, 0,3,1 }; + + buffer->indices.set_used(6); + + for (i = 0; i < 6; i++) buffer->indices[i] = u[i]; + + buffer->vertices.set_used(4); + + // position, normal, texture + buffer->vertices[0] = S3DVertex(-1.0, -1.0, z, -1, -1, -1, col, 0, 1); + buffer->vertices[1] = S3DVertex( 1.0, 1.0, z, 1, -1, -1, col, 1, 0); + buffer->vertices[2] = S3DVertex(-1.0, 1.0, z, 1, 1, -1, col, 0, 0); + buffer->vertices[3] = S3DVertex( 1.0, -1.0, z, -1, 1, -1, col, 1, 1); + + //centre and resize + //for (i = 0; i < 4; i++) { + // //center + // buffer->vertices[i].pos += Vector3(-0.5f, 0.5f, 0.0f); + // //resize + // buffer->vertices[i].pos *= size; + //} + + rsxAddressToOffset(&buffer->vertices[0].pos, &buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm, &buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col, &buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u, &buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0], &buffer->ind_off); + + return buffer; +} + +SMeshBuffer* createCube(f32 size) +{ + u32 i; + SColor col(255,255,255,255); + SMeshBuffer *buffer = new SMeshBuffer(); + const u16 u[36] = { 0,1,2, 0,2,3, 1,4,5, 1,5,2, 4,7,6, 4,6,5, + 7,0,3, 7,3,6, 9,2,5, 9,5,8, 0,10,11, 0,7,10}; + + buffer->indices.set_used(36); + for(i=0;i<36;i++) buffer->indices[i] = u[i]; + + buffer->vertices.set_used(12); + + buffer->vertices[0] = S3DVertex(0,0,0, -1,-1,-1, col, 1, 0); + buffer->vertices[1] = S3DVertex(1,0,0, 1,-1,-1, col, 1, 1); + buffer->vertices[2] = S3DVertex(1,1,0, 1, 1,-1, col, 0, 1); + buffer->vertices[3] = S3DVertex(0,1,0, -1, 1,-1, col, 0, 0); + buffer->vertices[4] = S3DVertex(1,0,1, 1,-1, 1, col, 1, 0); + buffer->vertices[5] = S3DVertex(1,1,1, 1, 1, 1, col, 0, 0); + buffer->vertices[6] = S3DVertex(0,1,1, -1, 1, 1, col, 0, 1); + buffer->vertices[7] = S3DVertex(0,0,1, -1,-1, 1, col, 1, 1); + buffer->vertices[8] = S3DVertex(0,1,1, -1, 1, 1, col, 1, 0); + buffer->vertices[9] = S3DVertex(0,1,0, -1, 1,-1, col, 1, 1); + buffer->vertices[10] = S3DVertex(1,0,1, 1,-1, 1, col, 0, 1); + buffer->vertices[11] = S3DVertex(1,0,0, 1,-1,-1, col, 0, 0); + + for(i=0;i<12;i++) { + buffer->vertices[i].pos -= Vector3(0.5f,0.5f,0.5f); + buffer->vertices[i].pos *= size; + } + + rsxAddressToOffset(&buffer->vertices[0].pos,&buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm,&buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col,&buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u,&buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0],&buffer->ind_off); + + return buffer; +} + +SMeshBuffer* createDonut(f32 outerRadius,f32 innerRadius,u32 polyCntX,u32 polyCntY) +{ + u32 i,x,y,level; + SColor col(100,255,255,255); + SMeshBuffer *buffer = new SMeshBuffer(); + + if(polyCntX<2) polyCntX = 2; + if(polyCntY<2) polyCntY = 2; + while(polyCntX*polyCntY>32767) { + polyCntX /= 2; + polyCntY /= 2; + } + + f32 ay = 0; + const f32 angleX = 2*M_PI/polyCntX; + const f32 angleY = 2*M_PI/polyCntY; + const u32 polyCntXpitch = polyCntX +1; + const u32 polyCntYpitch = polyCntY + 1; + + buffer->vertices.set_used(polyCntYpitch*polyCntXpitch); + buffer->indices.set_used(polyCntY*polyCntX*6); + + rsxAddressToOffset(&buffer->vertices[0].pos,&buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm,&buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col,&buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u,&buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0],&buffer->ind_off); + + i = 0; + for(y=0;y<=polyCntY;y++) { + f32 axz = 0; + + const f32 sinay = sinf(ay); + const f32 cosay = cosf(ay); + const f32 tu = (f32)y/(f32)polyCntY; + for(x=0;x<=polyCntX;x++) { + const Vector3 pos(static_cast((outerRadius - (innerRadius*cosf(axz)))*cosay), + static_cast((outerRadius - (innerRadius*cosf(axz)))*sinay), + static_cast(innerRadius*sinf(axz))); + + const Vector3 nrm(static_cast(-cosf(axz)*cosay), + static_cast(-cosf(axz)*sinay), + static_cast(sinf(axz))); + + buffer->vertices[i] = S3DVertex(pos,nrm,col,tu,(f32)x/(f32)polyCntX); + + axz += angleX; + i++; + } + ay += angleY; + } + + i = 0; + level = 0; + for(y=0;yindices[i++] = curr; + buffer->indices[i++] = curr + polyCntXpitch; + buffer->indices[i++] = curr + 1 + polyCntXpitch; + + buffer->indices[i++] = curr; + buffer->indices[i++] = curr + 1 + polyCntXpitch; + buffer->indices[i++] = curr + 1; + } + + buffer->indices[i++] = level + polyCntX; + buffer->indices[i++] = level + polyCntX - 1; + buffer->indices[i++] = level + polyCntX - 1 + polyCntXpitch; + + buffer->indices[i++] = level + polyCntX; + buffer->indices[i++] = level + polyCntX - 1 + polyCntXpitch; + buffer->indices[i++] = level + polyCntX + polyCntXpitch; + + level += polyCntXpitch; + } + + return buffer; +} + +SMeshBuffer* createSphere(f32 radius,u32 polyCntX,u32 polyCntY) +{ + u32 i,p1,p2,level; + u32 x,y,polyCntXpitch; + const f32 RECIPROCAL_PI = 1.0f/M_PI; + SMeshBuffer *buffer = new SMeshBuffer(); + + if(polyCntX<2) polyCntX = 2; + if(polyCntY<2) polyCntY = 2; + if(polyCntX*polyCntY>32767) { + if(polyCntX>polyCntY) + polyCntX = 32767/polyCntY-1; + else + polyCntY = 32767/(polyCntX+1); + } + polyCntXpitch = polyCntX+1; + + buffer->vertices.set_used((polyCntXpitch*polyCntY) + 2); + buffer->indices.set_used((polyCntX*polyCntY)*6); + + rsxAddressToOffset(&buffer->vertices[0].pos,&buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm,&buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col,&buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u,&buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0],&buffer->ind_off); + + i = 0; + level = 0; + for(p1=0;p1indices[i++] = curr; + buffer->indices[i++] = curr + polyCntXpitch; + buffer->indices[i++] = curr + 1 + polyCntXpitch; + + buffer->indices[i++] = curr; + buffer->indices[i++] = curr + 1 + polyCntXpitch; + buffer->indices[i++] = curr + 1; + } + + buffer->indices[i++] = level + polyCntX; + buffer->indices[i++] = level + polyCntX - 1; + buffer->indices[i++] = level + polyCntX - 1 + polyCntXpitch; + + buffer->indices[i++] = level + polyCntX; + buffer->indices[i++] = level + polyCntX - 1 + polyCntXpitch; + buffer->indices[i++] = level + polyCntX + polyCntXpitch; + + level += polyCntXpitch; + } + + const u32 polyCntSq = polyCntXpitch*polyCntY; + const u32 polyCntSq1 = polyCntSq+1; + const u32 polyCntSqM1 = (polyCntY-1)*polyCntXpitch; + + for(p2=0;p2indices[i++] = polyCntSq; + buffer->indices[i++] = p2; + buffer->indices[i++] = p2+1; + + buffer->indices[i++] = polyCntSq1; + buffer->indices[i++] = polyCntSqM1+p2; + buffer->indices[i++] = polyCntSqM1+p2+1; + } + + buffer->indices[i++] = polyCntSq; + buffer->indices[i++] = polyCntX-1; + buffer->indices[i++] = polyCntX; + + buffer->indices[i++] = polyCntSq1; + buffer->indices[i++] = polyCntSqM1; + buffer->indices[i++] = polyCntSqM1+polyCntX-1; + + f32 axz; + f32 ay = 0; + SColor col(100,255,255,255); + const f32 angelX = 2*M_PI/polyCntX; + const f32 angelY = M_PI/polyCntY; + + i = 0; + for(y=0;y(radius*cosf(axz)*sinay), static_cast(radius*cosf(ay)), static_cast(radius*sinf(axz)*sinay)); + + Vector3 normal = normalize(pos); + + f32 tu = 0.5F; + if(y==0) { + if(normal.getY()!=-1.0F && normal.getY()!=1.0F) + tu = static_cast(acosf(clamp(normal.getX()/sinay,-1.0f,1.0f))*0.5F*RECIPROCAL_PI); + if(normal.getZ()<0.0F) + tu = 1-tu; + } else + tu = buffer->vertices[i - polyCntXpitch].u; + + buffer->vertices[i] = S3DVertex(pos,normal,col,tu,static_cast(ay*RECIPROCAL_PI)); + axz += angelX; + i++; + } + buffer->vertices[i] = S3DVertex(buffer->vertices[i-polyCntX]); + buffer->vertices[i].u = 1.0F; + i++; + } + + buffer->vertices[i++] = S3DVertex(0.0F,radius,0.0F,0.0F,1.0F,0.0F,col,0.5F,0.0F); + buffer->vertices[i] = S3DVertex(0.0F,-radius,0.0F,0.0F,-1.0F,0.0F,col,0.5F,1.0F); + + return buffer; +} diff --git a/samples/graphics/rsx_Basic_Wallpaper/source/main.cpp b/samples/graphics/rsx_Basic_Wallpaper/source/main.cpp new file mode 100644 index 00000000..4ed8026c --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/source/main.cpp @@ -0,0 +1,383 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "wall1_png_bin.h" + +#include + +#include +#include +#include + +#include "acid.h" +#include "mesh.h" +#include "rsxutil.h" + +#include "diffuse_specular_shader_vpo.h" +#include "scanlines_fpo.h" + +#define GCM_APP_WAIT_LABEL_INDEX 128 +#define HOSTBUFFER_SIZE (128*1024*1024) + +u32 running = 0; + +vu32 *wait_label = NULL; + +u32 fp_offset; +u32 *fp_buffer; + +u32* texture_buffer; +u32 texture_offset; + +pngData* png; + + +SMeshBuffer* quad = NULL; + +// vertex shader +rsxProgramConst *projMatrix; + +rsxProgramAttrib* mPosIndex = NULL; + +rsxProgramAttrib* mColIndex = NULL; + +// fragment shader +rsxProgramConst* scanlines; +rsxProgramAttrib* textureUnit; + +u32 color_index; +u32 position_index; + + +void *vp_ucode = NULL; +rsxVertexProgram *vpo = (rsxVertexProgram*)diffuse_specular_shader_vpo; + +void *fp_ucode = NULL; +rsxFragmentProgram *fpo = (rsxFragmentProgram*)scanlines_fpo; + +// setting default scanline parameters +Vector4 scanlineParams(200.0f, 2.0f, 0.7f, 0.0f); + +SYS_PROCESS_PARAM(1001, 0x100000); + +static u32 sLabelValue = 0; + +extern "C" { +static void program_exit_callback() +{ + finish(); +} + +static void sysutil_exit_callback(u64 status,u64 param,void *usrdata) +{ + switch(status) { + case SYSUTIL_EXIT_GAME: + running = 0; + break; + case SYSUTIL_DRAW_BEGIN: + case SYSUTIL_DRAW_END: + break; + default: + break; + } +} +} + +SMeshBuffer* createQuad(Point3 P1, Point3 P2, Point3 P3, Point3 P4) +{ + u32 i; + u32 col = 0xFFFFFFFF; + + SMeshBuffer* buffer = new SMeshBuffer(); + const u16 u[6] = { 0,1,2, 0,3,1 }; + + buffer->cnt_indices = 6; + buffer->indices = (u16*)rsxMemalign(128, buffer->cnt_indices * sizeof(u16)); + + for (i = 0; i < 6; i++) buffer->indices[i] = u[i]; + + buffer->cnt_vertices = 4; + buffer->vertices = (S3DVertex*)rsxMemalign(128, buffer->cnt_vertices * sizeof(S3DVertex)); + + // position, normal, texture + buffer->vertices[0] = S3DVertex(P1.getX(), P1.getY(), P1.getZ(), -1, -1, -1, 0, 1, col); + buffer->vertices[1] = S3DVertex(P2.getX(), P2.getY(), P2.getZ(), 1, -1, -1, 1, 0, col); + buffer->vertices[2] = S3DVertex(P3.getX(), P3.getY(), P3.getZ(), 1, 1, -1, 0, 0, col); + buffer->vertices[3] = S3DVertex(P4.getX(), P4.getY(), P4.getZ(), -1, 1, -1, 1, 1, col); + + + /*rsxAddressToOffset(&buffer->vertices[0].pos, &buffer->pos_off); + rsxAddressToOffset(&buffer->vertices[0].nrm, &buffer->nrm_off); + rsxAddressToOffset(&buffer->vertices[0].col, &buffer->col_off); + rsxAddressToOffset(&buffer->vertices[0].u, &buffer->uv_off); + rsxAddressToOffset(&buffer->indices[0], &buffer->ind_off);*/ + + return buffer; +} + +static void init_texture() +{ + + u32 i; + u8* buffer; + + //Init png texture + const u8* data = (u8*)png->bmp_out; + texture_buffer = (u32*)rsxMemalign(128, (png->height * png->pitch)); + + if (!texture_buffer) return; + + rsxAddressToOffset(texture_buffer, &texture_offset); + + buffer = (u8*)texture_buffer; + for (i = 0; i < png->height * png->pitch; i += 4) { + buffer[i + 0] = *data++; + buffer[i + 1] = *data++; + buffer[i + 2] = *data++; + buffer[i + 3] = *data++; + } +} + + +static void setTexture(u8 textureUnit) +{ + u32 width = png->width; + u32 height = png->height; + u32 pitch = png->pitch; + gcmTexture texture; + + if (!texture_buffer) return; + + rsxInvalidateTextureCache(gGcmContext, GCM_INVALIDATE_TEXTURE); + + texture.format = (GCM_TEXTURE_FORMAT_A8R8G8B8 | GCM_TEXTURE_FORMAT_LIN); + texture.mipmap = 1; + texture.dimension = GCM_TEXTURE_DIMS_2D; + texture.cubemap = GCM_FALSE; + texture.remap = ((GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_B_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_G_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_R_SHIFT) | + (GCM_TEXTURE_REMAP_TYPE_REMAP << GCM_TEXTURE_REMAP_TYPE_A_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_B << GCM_TEXTURE_REMAP_COLOR_B_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_G << GCM_TEXTURE_REMAP_COLOR_G_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_R << GCM_TEXTURE_REMAP_COLOR_R_SHIFT) | + (GCM_TEXTURE_REMAP_COLOR_A << GCM_TEXTURE_REMAP_COLOR_A_SHIFT)); + texture.width = width; + texture.height = height; + texture.depth = 1; + texture.location = GCM_LOCATION_RSX; + texture.pitch = pitch; + texture.offset = texture_offset; + rsxLoadTexture(gGcmContext, textureUnit, &texture); + rsxTextureControl(gGcmContext, textureUnit, GCM_TRUE, 0 << 8, 12 << 8, GCM_TEXTURE_MAX_ANISO_1); + rsxTextureFilter(gGcmContext, textureUnit, 0, GCM_TEXTURE_LINEAR, GCM_TEXTURE_LINEAR, GCM_TEXTURE_CONVOLUTION_QUINCUNX); + rsxTextureWrapMode(gGcmContext, textureUnit, GCM_TEXTURE_CLAMP_TO_EDGE, GCM_TEXTURE_CLAMP_TO_EDGE, GCM_TEXTURE_CLAMP_TO_EDGE, 0, GCM_TEXTURE_ZFUNC_LESS, 0); +} + + +static void setDrawEnv() +{ + u16 x,y,w,h; + f32 min, max; + f32 scale[4],offset[4]; + + x = 0; + y = 0; + w = display_width; + h = display_height; + min = 0.0f; + max = 1.0f; + scale[0] = w*0.5f; + scale[1] = h*-0.5f; + scale[2] = (max - min)*0.5f; + scale[3] = 0.0f; + offset[0] = x + w*0.5f; + offset[1] = y + h*0.5f; + offset[2] = (max + min)*0.5f; + offset[3] = 0.0f; + + rsxSetCallCommand(gGcmContext, state_offset); + while(*wait_label != sLabelValue) + usleep(10); + sLabelValue++; + + rsxSetViewport(gGcmContext,x, y, w, h, min, max, scale, offset); + rsxSetScissor(gGcmContext,x,y,w,h); +} + +void init_shader() +{ + u32 fpsize = 0; + u32 vpsize = 0; + + rsxVertexProgramGetUCode(vpo, &vp_ucode, &vpsize); + + projMatrix = rsxVertexProgramGetConst(vpo, "modelViewProj"); + + mPosIndex = rsxVertexProgramGetAttrib(vpo, "position"); + + mColIndex = rsxVertexProgramGetAttrib(vpo, "color"); + + rsxFragmentProgramGetUCode(fpo, &fp_ucode, &fpsize); + + fp_buffer = (u32*)rsxMemalign(64,fpsize); + memcpy(fp_buffer,fp_ucode,fpsize); + + rsxAddressToOffset(fp_buffer,&fp_offset); + scanlines = rsxFragmentProgramGetConst(fpo, "scanline"); + textureUnit = rsxFragmentProgramGetAttrib(fpo, "texture"); + if (textureUnit) + printf("textureUnit OK\n"); + +} + + +void drawFrame() +{ + u32 i,offset; + SMeshBuffer* mesh = NULL; + + setDrawEnv(); + + + rsxSetClearColor(gGcmContext,0); + rsxSetClearDepthStencil(gGcmContext,0xffffff00); + rsxClearSurface(gGcmContext,GCM_CLEAR_R | + GCM_CLEAR_G | + GCM_CLEAR_B | + GCM_CLEAR_A | + GCM_CLEAR_S | + GCM_CLEAR_Z); + + rsxSetZControl(gGcmContext,0,1,1); + + for(i=0;i<8;i++) + rsxSetViewportClip(gGcmContext,i,display_width,display_height); + + Matrix4 tempMatrix = transpose(Matrix4::identity()); + + mesh = quad; + setTexture(textureUnit->index); + + rsxAddressToOffset(&mesh->vertices[0].pos, &offset); + rsxBindVertexArrayAttrib(gGcmContext, GCM_VERTEX_ATTRIB_POS, 0, offset, sizeof(S3DVertex), 3, GCM_VERTEX_DATA_TYPE_F32, GCM_LOCATION_RSX); + rsxAddressToOffset(&mesh->vertices[0].nrm, &offset); + rsxBindVertexArrayAttrib(gGcmContext, GCM_VERTEX_ATTRIB_NORMAL, 0, offset, sizeof(S3DVertex), 3, GCM_VERTEX_DATA_TYPE_F32, GCM_LOCATION_RSX); + rsxAddressToOffset(&mesh->vertices[0].u, &offset); + rsxBindVertexArrayAttrib(gGcmContext, GCM_VERTEX_ATTRIB_TEX0, 0, offset, sizeof(S3DVertex), 2, GCM_VERTEX_DATA_TYPE_F32, GCM_LOCATION_RSX); + rsxAddressToOffset(&mesh->vertices[0].col, &offset); + rsxBindVertexArrayAttrib(gGcmContext, GCM_VERTEX_ATTRIB_COLOR0, 0, offset, sizeof(S3DVertex), 4, GCM_VERTEX_DATA_TYPE_U8, GCM_LOCATION_RSX); + + rsxLoadVertexProgram(gGcmContext, vpo, vp_ucode); + rsxSetVertexProgramParameter(gGcmContext, vpo, projMatrix, (float*)&tempMatrix); + + rsxSetFragmentProgramParameter(gGcmContext, fpo, scanlines, (float*)&scanlineParams, fp_offset, GCM_LOCATION_RSX); + rsxLoadFragmentProgramLocation(gGcmContext, fpo, fp_offset, GCM_LOCATION_RSX); + + rsxSetWriteTextureLabel(gGcmContext, GCM_APP_WAIT_LABEL_INDEX, sLabelValue); + + rsxSetUserClipPlaneControl(gGcmContext, GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE, + GCM_USER_CLIP_PLANE_DISABLE); + + rsxAddressToOffset(&mesh->indices[0], &offset); + rsxDrawIndexArray(gGcmContext, GCM_TYPE_TRIANGLES, offset, mesh->cnt_indices, GCM_INDEX_TYPE_16B, GCM_LOCATION_RSX); + + rsxSetWriteTextureLabel(gGcmContext, GCM_APP_WAIT_LABEL_INDEX, sLabelValue); + rsxFlushBuffer(gGcmContext); + +} + +int main(int argc,const char *argv[]) +{ + padInfo padinfo; + padData paddata; + + if (sysModuleLoad(SYSMODULE_PNGDEC) != 0) exit(0); + + printf("rsxtest started...\n"); + + initScreen(HOSTBUFFER_SIZE); + ioPadInit(7); + + wait_label = gcmGetLabelAddress(GCM_APP_WAIT_LABEL_INDEX); + *wait_label = sLabelValue; + + //Init background Image + png = new pngData; + pngLoadFromBuffer(wall1_png_bin, wall1_png_bin_size, png); + + //Create quad + Point3 P1 = Point3(-1.0, -1.0, 0); + Point3 P2 = Point3(1.0, 1.0, 0); + Point3 P3 = Point3(-1.0, 1.0, 0); + Point3 P4 = Point3(1.0, -1.0, 0); + quad = createQuad(P1, P2, P3, P4); + + + init_shader(); + init_texture(); + + DebugFont::init(); + DebugFont::setScreenRes(display_width, display_height); + + atexit(program_exit_callback); + sysUtilRegisterCallback(0,sysutil_exit_callback,NULL); + + + running = 1; + while(running) { + sysUtilCheckCallback(); + + ioPadGetInfo(&padinfo); + for(int i=0; i < MAX_PADS; i++){ + if(padinfo.status[i]){ + ioPadGetData(i, &paddata); + + if(paddata.BTN_CIRCLE) + goto done; + if (paddata.BTN_CROSS) + scanlineParams.setW(0.1f); + if (paddata.BTN_SQUARE) + scanlineParams.setW(0.2f); + if (paddata.BTN_TRIANGLE) + scanlineParams.setW(0.0f); + } + + } + + drawFrame(); + int ypos = 53; + int xpos = 10; + DebugFont::setPosition(xpos, ypos); + DebugFont::setColor(0.5f, 1.0f, 0.5f, 1.0f); + + DebugFont::print("CROSS Button to enable horizontal scanlines"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("SQUARE Button to enable vertical scanlines"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("TRIANGLE Button to disable scanlines"); + ypos += 12; + DebugFont::setPosition(xpos, ypos); + DebugFont::print("CIRCLE Button to exit"); + + flip(); + } + +done: + printf("rsxtest done...\n"); + DebugFont::shutdown(); + finish(); + return 0; +} diff --git a/samples/graphics/rsx_Basic_Wallpaper/source/rsxutil.cpp b/samples/graphics/rsx_Basic_Wallpaper/source/rsxutil.cpp new file mode 100644 index 00000000..63715949 --- /dev/null +++ b/samples/graphics/rsx_Basic_Wallpaper/source/rsxutil.cpp @@ -0,0 +1,350 @@ +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "rsxutil.h" + +videoResolution vResolution; + +u32 curr_fb = 0; + +u32 display_width; +u32 display_height; + +u32 depth_pitch; +u32 depth_offset; +void *depth_buffer; + +u32 color_pitch; +u32 color_offset[FRAME_BUFFER_COUNT]; +void *color_buffer[FRAME_BUFFER_COUNT]; + +void *state_buffer; +u32 state_offset; + +f32 aspect_ratio; + +u32 fbOnDisplay = 0; +u32 fbFlipped = 0; +bool fbOnFlip = false; +sys_event_queue_t flipEventQueue; +sys_event_port_t flipEventPort; + +gcmSurface surface; + +static u32 sLabelVal = 1; +static RSXDebugFontRenderer *fontRenderer; + +static u32 sResolutionIds[] = { + VIDEO_RESOLUTION_1600x1080, + VIDEO_RESOLUTION_1440x1080, + VIDEO_RESOLUTION_1280x1080, + VIDEO_RESOLUTION_960x1080, + VIDEO_RESOLUTION_720, + VIDEO_RESOLUTION_480, + VIDEO_RESOLUTION_576 +}; +static size_t RESOLUTION_ID_COUNT = sizeof(sResolutionIds)/sizeof(u32); + +extern "C" { +static void flipHandler(const u32 head) +{ + (void)head; + u32 v = fbFlipped; + + for (u32 i = fbOnDisplay; i != v; i=(i + 1)%FRAME_BUFFER_COUNT) { + *((vu32*) gcmGetLabelAddress(GCM_BUFFER_STATUS_INDEX + i)) = BUFFER_IDLE; + } + fbOnDisplay = v; + fbOnFlip = false; + + sysEventPortSend(flipEventPort, 0, 0, 0); +} + +static void vblankHandler(const u32 head) +{ + (void)head; + u32 data; + u32 bufferToFlip; + u32 indexToFlip; + + data = *((vu32*) gcmGetLabelAddress(GCM_PREPARED_BUFFER_INDEX)); + bufferToFlip = (data >> 8); + indexToFlip = (data & 0x07); + + if (!fbOnFlip) { + if (bufferToFlip != fbOnDisplay) { + s32 ret = gcmSetFlipImmediate(indexToFlip); + if (ret != 0) { + printf("flip immediate failed\n"); + return; + } + fbFlipped = bufferToFlip; + fbOnFlip = true; + } + } +} +} + +static void syncPPUGPU() +{ + vu32 *label = (vu32*) gcmGetLabelAddress(GCM_PREPARED_BUFFER_INDEX); + while(((curr_fb + FRAME_BUFFER_COUNT - ((*label)>>8))%FRAME_BUFFER_COUNT) > MAX_BUFFER_QUEUE_SIZE) { + sys_event_t event; + + sysEventQueueReceive(flipEventQueue, &event, 0); + sysEventQueueDrain(flipEventQueue); + } +} + +static void waitRSXFinish() +{ + rsxSetWriteBackendLabel(gGcmContext,GCM_WAIT_LABEL_INDEX,sLabelVal); + + rsxFlushBuffer(gGcmContext); + + while(*(vu32*)gcmGetLabelAddress(GCM_WAIT_LABEL_INDEX)!=sLabelVal) + usleep(30); + + ++sLabelVal; +} + +static void waitRSXIdle() +{ + rsxSetWriteBackendLabel(gGcmContext,GCM_WAIT_LABEL_INDEX,sLabelVal); + rsxSetWaitLabel(gGcmContext,GCM_WAIT_LABEL_INDEX,sLabelVal); + + ++sLabelVal; + + waitRSXFinish(); +} + +void initVideoConfiguration() +{ + s32 rval = 0; + s32 resId = 0; + + for (size_t i=0;i < RESOLUTION_ID_COUNT;i++) { + rval = videoGetResolutionAvailability(VIDEO_PRIMARY, sResolutionIds[i], VIDEO_ASPECT_AUTO, 0); + if (rval != 1) continue; + + resId = sResolutionIds[i]; + rval = videoGetResolution(resId, &vResolution); + if(!rval) break; + } + + if(rval) { + printf("Error: videoGetResolutionAvailability failed. No usable resolution.\n"); + exit(1); + } + + videoConfiguration config = { + (u8)resId, + VIDEO_BUFFER_FORMAT_XRGB, + VIDEO_ASPECT_AUTO, + {0,0,0,0,0,0,0,0,0}, + gcmGetTiledPitchSize(vResolution.width*4) + }; + + rval = videoConfigure(VIDEO_PRIMARY, &config, NULL, 0); + if(rval) { + printf("Error: videoConfigure failed.\n"); + exit(1); + } + + videoState state; + + rval = videoGetState(VIDEO_PRIMARY, 0, &state); + switch(state.displayMode.aspect) { + case VIDEO_ASPECT_4_3: + aspect_ratio = 4.0f/3.0f; + break; + case VIDEO_ASPECT_16_9: + aspect_ratio = 16.0f/9.0f; + break; + default: + printf("unknown aspect ratio %x\n", state.displayMode.aspect); + aspect_ratio = 16.0f/9.0f; + break; + } + + display_height = vResolution.height; + display_width = vResolution.width; +} + +void initFlipEvent() +{ + sys_event_queue_attr_t queueAttr = { SYS_EVENT_QUEUE_PRIO, SYS_EVENT_QUEUE_PPU, "\0" }; + + sysEventQueueCreate(&flipEventQueue, &queueAttr, SYS_EVENT_QUEUE_KEY_LOCAL, 32); + sysEventPortCreate(&flipEventPort, SYS_EVENT_PORT_LOCAL, SYS_EVENT_PORT_NO_NAME); + sysEventPortConnectLocal(flipEventPort, flipEventQueue); + + gcmSetFlipHandler(flipHandler); + gcmSetVBlankHandler(vblankHandler); +} + +void initRenderTarget() +{ + memset(&surface, 0, sizeof(gcmSurface)); + + surface.colorFormat = GCM_SURFACE_X8R8G8B8; + surface.colorTarget = GCM_SURFACE_TARGET_0; + surface.colorLocation[0] = GCM_LOCATION_RSX; + surface.colorOffset[0] = color_offset[curr_fb]; + surface.colorPitch[0] = color_pitch; + + for(u32 i=1; i< GCM_MAX_MRT_COUNT;i++) { + surface.colorLocation[i] = GCM_LOCATION_RSX; + surface.colorOffset[i] = color_offset[curr_fb]; + surface.colorPitch[i] = 64; + } + + surface.depthFormat = GCM_SURFACE_ZETA_Z24S8; + surface.depthLocation = GCM_LOCATION_RSX; + surface.depthOffset = depth_offset; + surface.depthPitch = depth_pitch; + + surface.type = GCM_SURFACE_TYPE_LINEAR; + surface.antiAlias = GCM_SURFACE_CENTER_1; + + surface.width = display_width; + surface.height = display_height; + surface.x = 0; + surface.y = 0; +} + +void setRenderTarget(u32 index) +{ + surface.colorOffset[0] = color_offset[index]; + rsxSetSurface(gGcmContext,&surface); +} + +void initDefaultStateCommands() +{ + rsxSetCurrentBuffer(nullptr, (u32*)state_buffer, HOST_STATE_CB_SIZE); + { + rsxSetBlendEnable(gGcmContext, GCM_FALSE); + rsxSetBlendFunc(gGcmContext, GCM_ONE, GCM_ZERO, GCM_ONE, GCM_ZERO); + rsxSetBlendEquation(gGcmContext, GCM_FUNC_ADD, GCM_FUNC_ADD); + rsxSetDepthWriteEnable(gGcmContext, GCM_TRUE); + rsxSetDepthFunc(gGcmContext, GCM_LESS); + rsxSetDepthTestEnable(gGcmContext, GCM_TRUE); + rsxSetClearDepthStencil(gGcmContext,0xffffff00); + rsxSetShadeModel(gGcmContext,GCM_SHADE_MODEL_SMOOTH); + rsxSetFrontFace(gGcmContext, GCM_FRONTFACE_CCW); + rsxSetClearReport(gGcmContext, GCM_ZPASS_PIXEL_CNT); + rsxSetZControl(gGcmContext, GCM_TRUE, GCM_FALSE, GCM_FALSE); + rsxSetZCullControl(gGcmContext, GCM_ZCULL_LESS, GCM_ZCULL_LONES); + rsxSetSCullControl(gGcmContext, GCM_SCULL_SFUNC_LESS, 1, 0xff); + rsxSetColorMaskMrt(gGcmContext, 0); + rsxSetColorMask(gGcmContext,GCM_COLOR_MASK_B | + GCM_COLOR_MASK_G | + GCM_COLOR_MASK_R | + GCM_COLOR_MASK_A); + rsxSetReturnCommand(gGcmContext); + } + rsxSetDefaultCommandBuffer(nullptr); +} + +void initScreen(u32 hostBufferSize) +{ + u32 zs_depth = 4; + u32 color_depth = 4; + u32 bufferSize = rsxAlign(HOST_ADDR_ALIGNMENT, (DEFAULT_CB_SIZE + HOST_STATE_CB_SIZE + hostBufferSize)); + + gcmInitDefaultFifoMode(GCM_DEFAULT_FIFO_MODE_CONDITIONAL); + + void *hostAddr = memalign(HOST_ADDR_ALIGNMENT, bufferSize); + rsxInit(nullptr, DEFAULT_CB_SIZE, bufferSize, hostAddr); + + state_buffer = (void*)((intptr_t)hostAddr + DEFAULT_CB_SIZE); + rsxAddressToOffset(state_buffer, &state_offset); + printf("state_cmd: %p [%08x]\n", state_buffer, state_offset); + + initDefaultStateCommands(); + initVideoConfiguration(); + + fontRenderer = new RSXDebugFontRenderer(gGcmContext); + + waitRSXIdle(); + + gcmSetFlipMode(GCM_FLIP_HSYNC); + + color_pitch = gcmGetTiledPitchSize(display_width*color_depth); + depth_pitch = gcmGetTiledPitchSize(display_width*zs_depth); + + u32 tileIndex = 0; + u32 bufferHeight = rsxAlign(GCM_TILE_LOCAL_ALIGN_HEIGHT, display_height); + u32 colorBufferSize = bufferHeight*color_pitch; + u32 depthBufferSize = bufferHeight*depth_pitch; + for (u32 i=0; i < FRAME_BUFFER_COUNT;i++, tileIndex++) { + bufferSize = rsxAlign(GCM_TILE_ALIGN_OFFSET, colorBufferSize); + color_buffer[i] = rsxMemalign(GCM_TILE_ALIGN_SIZE, bufferSize); + rsxAddressToOffset(color_buffer[i], &color_offset[i]); + gcmSetDisplayBuffer(i, color_offset[i], color_pitch, display_width, display_height); + gcmSetTileInfo(tileIndex, GCM_LOCATION_RSX, color_offset[i], bufferSize, color_pitch, GCM_COMPMODE_DISABLED, 0, 0); + gcmBindTile(tileIndex); + printf("fb[%d]: %p (%08x) [%dx%d] %d\n", i, color_buffer[i], color_offset[i], display_width, display_height, color_pitch); + } + + bufferSize = rsxAlign(GCM_TILE_ALIGN_OFFSET, depthBufferSize); + depth_buffer = rsxMemalign(GCM_TILE_ALIGN_SIZE, bufferSize); + rsxAddressToOffset(depth_buffer, &depth_offset); + gcmSetTileInfo(tileIndex, GCM_LOCATION_RSX, depth_offset, bufferSize, depth_pitch, GCM_COMPMODE_Z32_SEPSTENCIL, 0, 2); + gcmBindTile(tileIndex); + + gcmSetZcull(0, depth_offset, rsxAlign(64, display_width), rsxAlign(64, display_height), 0, GCM_ZCULL_Z24S8, GCM_SURFACE_CENTER_1, GCM_ZCULL_LESS, GCM_ZCULL_LONES, GCM_SCULL_SFUNC_LESS, 1, 0xff); + + for (u32 i=0;i < FRAME_BUFFER_COUNT;i++) { + *((vu32*) gcmGetLabelAddress(GCM_BUFFER_STATUS_INDEX + i)) = BUFFER_IDLE; + } + *((vu32*) gcmGetLabelAddress(GCM_PREPARED_BUFFER_INDEX)) = (fbOnDisplay << 8); + *((vu32*) gcmGetLabelAddress(GCM_BUFFER_STATUS_INDEX + fbOnDisplay)) = BUFFER_BUSY; + + curr_fb = (fbOnDisplay + 1)%FRAME_BUFFER_COUNT; + + initFlipEvent(); + initRenderTarget(); + + rsxSetWriteCommandLabel(gGcmContext, GCM_BUFFER_STATUS_INDEX + curr_fb, BUFFER_BUSY); +} + +void flip() +{ + s32 qid = gcmSetPrepareFlip(gGcmContext, curr_fb); + while (qid < 0) { + usleep(100); + qid = gcmSetPrepareFlip(gGcmContext, curr_fb); + } + + rsxSetWriteBackendLabel(gGcmContext, GCM_PREPARED_BUFFER_INDEX, ((curr_fb << 8) | qid)); + rsxFlushBuffer(gGcmContext); + + syncPPUGPU(); + + curr_fb = (curr_fb + 1)%FRAME_BUFFER_COUNT; + + rsxSetWaitLabel(gGcmContext, GCM_BUFFER_STATUS_INDEX + curr_fb, BUFFER_IDLE); + rsxSetWriteCommandLabel(gGcmContext, GCM_BUFFER_STATUS_INDEX + curr_fb, BUFFER_BUSY); + + setRenderTarget(curr_fb); +} + +void finish() +{ + rsxFinish(gGcmContext,1); + + u32 data = *((vu32*) gcmGetLabelAddress(GCM_PREPARED_BUFFER_INDEX)); + u32 lastBuffer = (data >> 8); + while (lastBuffer != fbOnDisplay) + usleep(100); +}